/* Generated by Cython 3.0.0 */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
#if defined(CYTHON_LIMITED_API) && 0
  #ifndef Py_LIMITED_API
    #if CYTHON_LIMITED_API+0 > 0x03030000
      #define Py_LIMITED_API CYTHON_LIMITED_API
    #else
      #define Py_LIMITED_API 0x03030000
    #endif
  #endif
#endif

#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02070000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)
    #error Cython requires Python 2.7+ or Python 3.3+.
#else
#define CYTHON_ABI "3_0_0"
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."
#define CYTHON_HEX_VERSION 0x030000F0
#define CYTHON_FUTURE_DIVISION 0
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(_WIN32) && !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#if defined(GRAALVM_PYTHON)
  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
     The existence of this section does not imply that anything works or is even tested */
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 1
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
#elif defined(PYPY_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS (PY_MAJOR_VERSION >= 3)
  #endif
  #if PY_VERSION_HEX < 0x03090000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1 && PYPY_VERSION_NUM >= 0x07030C00)
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
#elif defined(CYTHON_LIMITED_API)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 1
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #undef CYTHON_CLINE_IN_TRACEBACK
  #define CYTHON_CLINE_IN_TRACEBACK 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 1
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_ASYNC_SLOTS
  #define CYTHON_USE_ASYNC_SLOTS 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #endif
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 1
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
#elif defined(PY_NOGIL)
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 1
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #ifndef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_NOGIL 0
  #ifndef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #ifndef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #if PY_MAJOR_VERSION < 3
    #undef CYTHON_USE_ASYNC_SLOTS
    #define CYTHON_USE_ASYNC_SLOTS 0
  #elif !defined(CYTHON_USE_ASYNC_SLOTS)
    #define CYTHON_USE_ASYNC_SLOTS 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #ifndef CYTHON_FAST_GIL
    #define CYTHON_FAST_GIL (PY_MAJOR_VERSION < 3 || PY_VERSION_HEX >= 0x03060000 && PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL (PY_VERSION_HEX >= 0x030700A1)
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #if PY_VERSION_HEX < 0x03050000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #if PY_VERSION_HEX < 0x030400a1
    #undef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #elif !defined(CYTHON_USE_TP_FINALIZE)
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #if PY_VERSION_HEX < 0x030600B1
    #undef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS 0
  #elif !defined(CYTHON_USE_DICT_VERSIONS)
    #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5)
  #endif
  #if PY_VERSION_HEX < 0x030700A3
    #undef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK 0
  #elif !defined(CYTHON_USE_EXC_INFO_STACK)
    #define CYTHON_USE_EXC_INFO_STACK 1
  #endif
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)
#endif
#if !defined(CYTHON_VECTORCALL)
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
#endif
#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_MAJOR_VERSION < 3
    #include "longintrepr.h"
  #endif
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifndef CYTHON_UNUSED
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(maybe_unused)
        #define CYTHON_UNUSED [[maybe_unused]]
      #endif
    #endif
  #endif
#endif
#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
            typedef unsigned char     uint8_t;
            typedef unsigned short    uint16_t;
            typedef unsigned int      uint32_t;
        #else
            typedef unsigned __int8   uint8_t;
            typedef unsigned __int16  uint16_t;
            typedef unsigned __int32  uint32_t;
        #endif
    #endif
    #if _MSC_VER < 1300
        #ifdef _WIN64
            typedef unsigned long long  __pyx_uintptr_t;
        #else
            typedef unsigned int        __pyx_uintptr_t;
        #endif
    #else
        #ifdef _WIN64
            typedef unsigned __int64    __pyx_uintptr_t;
        #else
            typedef unsigned __int32    __pyx_uintptr_t;
        #endif
    #endif
#else
    #include <stdint.h>
    typedef uintptr_t  __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(fallthrough)
        #define CYTHON_FALLTHROUGH [[fallthrough]]
      #endif
    #endif
    #ifndef CYTHON_FALLTHROUGH
      #if __has_cpp_attribute(clang::fallthrough)
        #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
      #elif __has_cpp_attribute(gnu::fallthrough)
        #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
      #endif
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif
#ifdef __cplusplus
  template <typename T>
  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
#else
  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
#endif
#if CYTHON_COMPILING_IN_PYPY == 1
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

#ifndef __cplusplus
  #error "Cython files generated with the C++ option must be compiled with a C++ compiler."
#endif
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #else
    #define CYTHON_INLINE inline
  #endif
#endif
template<typename T>
void __Pyx_call_destructor(T& x) {
    x.~T();
}
template<typename T>
class __Pyx_FakeReference {
  public:
    __Pyx_FakeReference() : ptr(NULL) { }
    __Pyx_FakeReference(const T& ref) : ptr(const_cast<T*>(&ref)) { }
    T *operator->() { return ptr; }
    T *operator&() { return ptr; }
    operator T&() { return *ptr; }
    template<typename U> bool operator ==(const U& other) const { return *ptr == other; }
    template<typename U> bool operator !=(const U& other) const { return *ptr != other; }
    template<typename U> bool operator==(const __Pyx_FakeReference<U>& other) const { return *ptr == *other.ptr; }
    template<typename U> bool operator!=(const __Pyx_FakeReference<U>& other) const { return *ptr != *other.ptr; }
  private:
    T *ptr;
};

#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_DefaultClassType PyClass_Type
  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_DefaultClassType PyType_Type
#if PY_VERSION_HEX >= 0x030B00A1
    static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int p, int k, int l, int s, int f,
                                                    PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                                    PyObject *fv, PyObject *cell, PyObject* fn,
                                                    PyObject *name, int fline, PyObject *lnos) {
        PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL, *kwonlyargcount=NULL;
        PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL, *empty=NULL;
        const char *fn_cstr=NULL;
        const char *name_cstr=NULL;
        PyCodeObject *co=NULL, *result=NULL;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        if (!(kwds=PyDict_New())) goto end;
        if (!(argcount=PyLong_FromLong(a))) goto end;
        if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
        if (!(posonlyargcount=PyLong_FromLong(p))) goto end;
        if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount) != 0) goto end;
        if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
        if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) != 0) goto end;
        if (!(nlocals=PyLong_FromLong(l))) goto end;
        if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
        if (!(stacksize=PyLong_FromLong(s))) goto end;
        if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto end;
        if (!(flags=PyLong_FromLong(f))) goto end;
        if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
        if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
        if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
        if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
        if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
        if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace"))) goto end;
        if (!(empty = PyTuple_New(0))) goto end;
        result = (PyCodeObject*) PyObject_Call(replace, empty, kwds);
    end:
        Py_XDECREF((PyObject*) co);
        Py_XDECREF(kwds);
        Py_XDECREF(argcount);
        Py_XDECREF(posonlyargcount);
        Py_XDECREF(kwonlyargcount);
        Py_XDECREF(nlocals);
        Py_XDECREF(stacksize);
        Py_XDECREF(replace);
        Py_XDECREF(empty);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx_PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#endif
#endif
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
  #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
#else
  #define __Pyx_Py_Is(x, y) ((x) == (y))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
#else
  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
#else
  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
#else
  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
#endif
#define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
#else
  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
#endif
#ifndef CO_COROUTINE
  #define CO_COROUTINE 0x80
#endif
#ifndef CO_ASYNC_GENERATOR
  #define CO_ASYNC_GENERATOR 0x200
#endif
#ifndef Py_TPFLAGS_CHECKTYPES
  #define Py_TPFLAGS_CHECKTYPES 0
#endif
#ifndef Py_TPFLAGS_HAVE_INDEX
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#ifndef Py_TPFLAGS_HAVE_FINALIZE
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#ifndef Py_TPFLAGS_SEQUENCE
  #define Py_TPFLAGS_SEQUENCE 0
#endif
#ifndef Py_TPFLAGS_MAPPING
  #define Py_TPFLAGS_MAPPING 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #define __Pyx_PyCFunctionFast _PyCFunctionFast
  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
#endif
#if CYTHON_METH_FASTCALL
  #define __Pyx_METH_FASTCALL METH_FASTCALL
  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
#else
  #define __Pyx_METH_FASTCALL METH_VARARGS
  #define __Pyx_PyCFunction_FastCall PyCFunction
  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
#endif
#if CYTHON_VECTORCALL
  #define __pyx_vectorcallfunc vectorcallfunc
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
  #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
#elif CYTHON_BACKPORT_VECTORCALL
  typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
                                            size_t nargsf, PyObject *kwnames);
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  ((size_t)1 << (8 * sizeof(size_t) - 1))
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_VERSION_HEX < 0x030900B1
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
  #define __Pyx_PyCMethod  PyCMethod
#endif
#ifndef METH_METHOD
  #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyThreadState_Current PyThreadState_Get()
#elif !CYTHON_FAST_THREAD_STATE
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x03060000
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#elif PY_VERSION_HEX >= 0x03000000
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_Current
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE void *__Pyx_PyModule_GetState(PyObject *op)
{
    void *result;
    result = PyModule_GetState(op);
    if (!result)
        Py_FatalError("Couldn't find the module state");
    return result;
}
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE(obj), name, func_ctype)
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
#endif
#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)
#include "pythread.h"
#define Py_tss_NEEDS_INIT 0
typedef int Py_tss_t;
static CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {
  *key = PyThread_create_key();
  return 0;
}
static CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {
  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));
  *key = Py_tss_NEEDS_INIT;
  return key;
}
static CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {
  PyObject_Free(key);
}
static CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {
  return *key != Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {
  PyThread_delete_key(*key);
  *key = Py_tss_NEEDS_INIT;
}
static CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {
  return PyThread_set_key_value(*key, value);
}
static CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {
  return PyThread_get_key_value(*key);
}
#endif
#if PY_MAJOR_VERSION < 3
    #if CYTHON_COMPILING_IN_PYPY
        #if PYPY_VERSION_NUM < 0x07030600
            #if defined(__cplusplus) && __cplusplus >= 201402L
                [[deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")]]
            #elif defined(__GNUC__) || defined(__clang__)
                __attribute__ ((__deprecated__("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6")))
            #elif defined(_MSC_VER)
                __declspec(deprecated("`with nogil:` inside a nogil function will not release the GIL in PyPy2 < 7.3.6"))
            #endif
            static CYTHON_INLINE int PyGILState_Check(void) {
                return 0;
            }
        #else  // PYPY_VERSION_NUM < 0x07030600
        #endif  // PYPY_VERSION_NUM < 0x07030600
    #else
        static CYTHON_INLINE int PyGILState_Check(void) {
            PyThreadState * tstate = _PyThreadState_Current;
            return tstate && (tstate == PyGILState_GetThisThreadState());
        }
    #endif
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX > 0x030600B4 && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
    PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
    if (res == NULL) PyErr_Clear();
    return res;
}
#elif PY_MAJOR_VERSION >= 3 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000)
#define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#else
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
#if CYTHON_COMPILING_IN_PYPY
    return PyDict_GetItem(dict, name);
#else
    PyDictEntry *ep;
    PyDictObject *mp = (PyDictObject*) dict;
    long hash = ((PyStringObject *) name)->ob_shash;
    assert(hash != -1);
    ep = (mp->ma_lookup)(mp, name, hash);
    if (ep == NULL) {
        return NULL;
    }
    return ep->me_value;
#endif
}
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#endif
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
  #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  (Py_TYPE(obj)->tp_iternext)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
  #define __Pyx_PyObject_GetIterNextFunc(obj)  PyIter_Next
#endif
#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE(obj);\
    assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
    PyObject_GC_Del(obj);\
    Py_DECREF(type);\
}
#else
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GetLength(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
#elif PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_READY(op)       (0)
  #else
    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                                0 : _PyUnicode_Ready((PyObject *)(op)))
  #endif
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         ((int)PyUnicode_KIND(u))
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #else
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
    #else
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
    #endif
  #endif
#else
  #define CYTHON_PEP393_ENABLED 0
  #define PyUnicode_1BYTE_KIND  1
  #define PyUnicode_2BYTE_KIND  2
  #define PyUnicode_4BYTE_KIND  4
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535U : 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((int)sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = (Py_UNICODE) ch)
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #if !defined(PyUnicode_DecodeUnicodeEscape)
    #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
  #endif
  #if !defined(PyUnicode_Contains) || (PY_MAJOR_VERSION == 2 && PYPY_VERSION_NUM < 0x07030500)
    #undef PyUnicode_Contains
    #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
  #endif
  #if !defined(PyByteArray_Check)
    #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
  #endif
  #if !defined(PyObject_Format)
    #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
  #endif
#endif
#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None || (PyString_Check(b) && !PyString_CheckExact(b)))) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)
  #define PyObject_ASCII(o)            PyObject_Repr(o)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#ifndef PyObject_Unicode
  #define PyObject_Unicode             PyObject_Str
#endif
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#if CYTHON_COMPILING_IN_CPYTHON
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#else
  #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
#else
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define __Pyx_Py3Int_Check(op)       PyLong_Check(op)
  #define __Pyx_Py3Int_CheckExact(op)  PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#else
  #define __Pyx_Py3Int_Check(op)       (PyLong_Check(op) || PyInt_Check(op))
  #define __Pyx_Py3Int_CheckExact(op)  (PyLong_CheckExact(op) || PyInt_CheckExact(op))
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
  #ifndef PyUnicode_InternFromString
    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
  #endif
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsHash_t
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   __Pyx_PyIndex_AsSsize_t
#endif
#if CYTHON_USE_ASYNC_SLOTS
  #if PY_VERSION_HEX >= 0x030500B1
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
  #else
    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
  #endif
#else
  #define __Pyx_PyType_AsAsync(obj) NULL
#endif
#ifndef __Pyx_PyAsyncMethodsStruct
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
    } __Pyx_PyAsyncMethodsStruct;
#endif

#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
  #if !defined(_USE_MATH_DEFINES)
    #define _USE_MATH_DEFINES
  #endif
#endif
#include <math.h>
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#define __PYX_MARK_ERR_POS(f_index, lineno) \
    { __pyx_filename = __pyx_f[f_index]; (void)__pyx_filename; __pyx_lineno = lineno; (void)__pyx_lineno; __pyx_clineno = __LINE__; (void)__pyx_clineno; }
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
    #define __PYX_EXTERN_C extern "C++"
#endif

#define __PYX_HAVE__yoda__core
#define __PYX_HAVE_API__yoda__core
/* Early includes */
#include <string.h>
#include <string>
#include "ios"
#include "new"
#include "stdexcept"
#include "typeinfo"
#include <vector>
#include <utility>

    #if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
    // move should be defined for these versions of MSVC, but __cplusplus isn't set usefully
    #include <type_traits>

    namespace cython_std {
    template <typename T> typename std::remove_reference<T>::type&& move(T& t) noexcept { return std::move(t); }
    template <typename T> typename std::remove_reference<T>::type&& move(T&& t) noexcept { return std::move(t); }
    }

    #endif
    
#include <map>
#include <unordered_map>
#include "YODA/Config/YodaConfig.h"
#include "errors.hh"
#include "YODA/Utils/MathUtils.h"
#include "YODA/Utils/Paths.h"
#include "YODA/Dbn0D.h"
#include "YODA/Dbn1D.h"
#include "YODA/Dbn2D.h"
#include "YODA/Dbn3D.h"
#include "YODA/Point.h"
#include "YODA/Point1D.h"
#include "YODA/Point2D.h"
#include "YODA/Point3D.h"
#include "YODA/Bin.h"
#include "YODA/Bin1D.h"
#include "YODA/Bin2D.h"
#include "YODA/HistoBin1D.h"
#include "merge.hh"
#include "YODA/HistoBin2D.h"
#include "YODA/ProfileBin1D.h"
#include "YODA/ProfileBin2D.h"
#include "YODA/AnalysisObject.h"
#include "YODA/Fillable.h"
#include "YODA/Binned.h"
#include "YODA/Scatter.h"
#include "YODA/Utils/sortedvector.h"
#include "YODA/Counter.h"
#include "YODA/Scatter1D.h"
#include "YODA/Scatter2D.h"
#include "YODA/Scatter3D.h"
#include "YODA/Histo1D.h"
#include "YODA/Histo2D.h"
#include "YODA/Profile1D.h"
#include "YODA/Profile2D.h"
#include <iostream>
#include <sstream>
#include "YODA/IO.h"
#include "YODA/Index.h"
#include "YODA/Reader.h"
#include "YODA/ReaderYODA.h"
#include "YODA/ReaderFLAT.h"
#include "YODA/ReaderAIDA.h"
#include "YODA/Writer.h"
#include "YODA/WriterYODA.h"
#include "YODA/WriterFLAT.h"
#include "YODA/WriterAIDA.h"
#include "YODA/Axis1D.h"
#include "YODA/Axis2D.h"
#include <stdio.h>
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 1
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
#define __PYX_DEFAULT_STRING_ENCODING "utf8"
#define __Pyx_PyObject_FromString __Pyx_PyStr_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyStr_FromStringAndSize
#define __Pyx_uchar_cast(c) ((unsigned char)c)
#define __Pyx_long_cast(x) ((long)x)
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
    (sizeof(type) < sizeof(Py_ssize_t))  ||\
    (sizeof(type) > sizeof(Py_ssize_t) &&\
          likely(v < (type)PY_SSIZE_T_MAX ||\
                 v == (type)PY_SSIZE_T_MAX)  &&\
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
                                v == (type)PY_SSIZE_T_MIN)))  ||\
    (sizeof(type) == sizeof(Py_ssize_t) &&\
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#if defined (__cplusplus) && __cplusplus >= 201103L
    #include <cstdlib>
    #define __Pyx_sst_abs(value) std::abs(value)
#elif SIZEOF_INT >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) abs(value)
#elif SIZEOF_LONG >= SIZEOF_SIZE_T
    #define __Pyx_sst_abs(value) labs(value)
#elif defined (_MSC_VER)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))
#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define __Pyx_sst_abs(value) llabs(value)
#elif defined (__GNUC__)
    #define __Pyx_sst_abs(value) __builtin_llabs(value)
#else
    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
#define __Pyx_PyObject_AsWritableString(s)    ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const wchar_t *u)
{
    const wchar_t *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#else
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
{
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#endif
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#else
#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))
#endif
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_VERSION_HEX >= 0x030C00A7
  #ifndef _PyLong_SIGN_MASK
    #define _PyLong_SIGN_MASK 3
  #endif
  #ifndef _PyLong_NON_SIZE_BITS
    #define _PyLong_NON_SIZE_BITS 3
  #endif
  #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
  #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
  #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
  #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
  #define __Pyx_PyLong_SignedDigitCount(x)\
        ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
  #else
    #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
  #endif
  typedef Py_ssize_t  __Pyx_compact_pylong;
  typedef size_t  __Pyx_compact_upylong;
  #else  // Py < 3.12
  #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
  #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
  #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
  #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
  #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
  #define __Pyx_PyLong_CompactValue(x)\
        ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
  typedef sdigit  __Pyx_compact_pylong;
  typedef digit  __Pyx_compact_upylong;
  #endif
  #if PY_VERSION_HEX >= 0x030C00A5
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
  #else
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
  #endif
#endif
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = (char) c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c) + 1);
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }

#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;

/* #### Code section: filename_table ### */

static const char *__pyx_f[] = {
  "<stringsource>",
  "include/AnalysisObject.pyx",
  "include/Histo1D.pyx",
  "include/Histo2D.pyx",
  "include/Scatter1D.pyx",
  "include/Functions.pyx",
  "include/IO.pyx",
  "util.pxd",
  "core.pyx",
  "include/Dbn0D.pyx",
  "include/Dbn1D.pyx",
  "include/Dbn2D.pyx",
  "include/Dbn3D.pyx",
  "include/Counter.pyx",
  "include/Bin.pyx",
  "include/generated/Bin1D_Dbn1D.pyx",
  "include/generated/Bin1D_Dbn2D.pyx",
  "include/HistoBin1D.pyx",
  "include/ProfileBin1D.pyx",
  "include/Profile1D.pyx",
  "include/generated/Bin2D_Dbn2D.pyx",
  "include/generated/Bin2D_Dbn3D.pyx",
  "include/ProfileBin2D.pyx",
  "include/HistoBin2D.pyx",
  "include/Profile2D.pyx",
  "include/Point.pyx",
  "include/Point1D.pyx",
  "include/Point2D.pyx",
  "include/Point3D.pyx",
  "include/Scatter2D.pyx",
  "include/Scatter3D.pyx",
  "type.pxd",
  "include/Errors.pyx",
};
/* #### Code section: utility_code_proto_before_types ### */
/* #### Code section: numeric_typedefs ### */
/* #### Code section: complex_type_declarations ### */
/* #### Code section: type_declarations ### */

/*--- Type declarations ---*/
struct __pyx_obj_4yoda_4util_Base;
struct __pyx_obj_4yoda_4core_Dbn0D;
struct __pyx_obj_4yoda_4core_Dbn1D;
struct __pyx_obj_4yoda_4core_Dbn2D;
struct __pyx_obj_4yoda_4core_Dbn3D;
struct __pyx_obj_4yoda_4core_Bin;
struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D;
struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D;
struct __pyx_obj_4yoda_4core_HistoBin1D;
struct __pyx_obj_4yoda_4core_ProfileBin1D;
struct __pyx_obj_4yoda_4core_AnalysisObject;
struct __pyx_obj_4yoda_4core_Counter;
struct __pyx_obj_4yoda_4core_Histo1D;
struct __pyx_obj_4yoda_4core_Profile1D;
struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D;
struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D;
struct __pyx_obj_4yoda_4core_ProfileBin2D;
struct __pyx_obj_4yoda_4core_HistoBin2D;
struct __pyx_obj_4yoda_4core_Histo2D;
struct __pyx_obj_4yoda_4core_Profile2D;
struct __pyx_obj_4yoda_4core_Point;
struct __pyx_obj_4yoda_4core_Point1D;
struct __pyx_obj_4yoda_4core_Point2D;
struct __pyx_obj_4yoda_4core_Point3D;
struct __pyx_obj_4yoda_4core_Scatter1D;
struct __pyx_obj_4yoda_4core_Scatter2D;
struct __pyx_obj_4yoda_4core_Scatter3D;
struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr;
struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr;

/* "yoda/declarations.pxd":18
 *     void yodaerr "translate_yoda_error" ()
 * 
 * ctypedef map[string, string] Annotations             # <<<<<<<<<<<<<<
 * ctypedef double (*dbl_dbl_fptr) (double)
 * ctypedef map[string, pair[double,double]] errMap
 */
typedef std::map<std::string,std::string>  __pyx_t_4yoda_12declarations_Annotations;

/* "yoda/declarations.pxd":19
 * 
 * ctypedef map[string, string] Annotations
 * ctypedef double (*dbl_dbl_fptr) (double)             # <<<<<<<<<<<<<<
 * ctypedef map[string, pair[double,double]] errMap
 * 
 */
typedef double (*__pyx_t_4yoda_12declarations_dbl_dbl_fptr)(double);

/* "yoda/declarations.pxd":20
 * ctypedef map[string, string] Annotations
 * ctypedef double (*dbl_dbl_fptr) (double)
 * ctypedef map[string, pair[double,double]] errMap             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef std::map<std::string,std::pair<double,double> >  __pyx_t_4yoda_12declarations_errMap;

/* "yoda/declarations.pxd":481
 *         Bin1D operator - (Bin1D&)
 * 
 * ctypedef Bin1D[Dbn1D] Bin1D_Dbn1D             # <<<<<<<<<<<<<<
 * ctypedef Bin1D[Dbn2D] Bin1D_Dbn2D
 * ctypedef Bin1D[Dbn3D] Bin1D_Dbn3D
 */
typedef YODA::Bin1D<YODA::Dbn1D>  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D;

/* "yoda/declarations.pxd":482
 * 
 * ctypedef Bin1D[Dbn1D] Bin1D_Dbn1D
 * ctypedef Bin1D[Dbn2D] Bin1D_Dbn2D             # <<<<<<<<<<<<<<
 * ctypedef Bin1D[Dbn3D] Bin1D_Dbn3D
 * #}}} Bin1D
 */
typedef YODA::Bin1D<YODA::Dbn2D>  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D;

/* "yoda/declarations.pxd":483
 * ctypedef Bin1D[Dbn1D] Bin1D_Dbn1D
 * ctypedef Bin1D[Dbn2D] Bin1D_Dbn2D
 * ctypedef Bin1D[Dbn3D] Bin1D_Dbn3D             # <<<<<<<<<<<<<<
 * #}}} Bin1D
 * 
 */
typedef YODA::Bin1D<YODA::Dbn3D>  __pyx_t_4yoda_12declarations_Bin1D_Dbn3D;

/* "yoda/declarations.pxd":546
 *         int adjacentTo(Bin2D) except +yodaerr
 * 
 * ctypedef Bin2D[Dbn2D] Bin2D_Dbn2D             # <<<<<<<<<<<<<<
 * ctypedef Bin2D[Dbn3D] Bin2D_Dbn3D
 * # }}} Bin2D
 */
typedef YODA::Bin2D<YODA::Dbn2D>  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D;

/* "yoda/declarations.pxd":547
 * 
 * ctypedef Bin2D[Dbn2D] Bin2D_Dbn2D
 * ctypedef Bin2D[Dbn3D] Bin2D_Dbn3D             # <<<<<<<<<<<<<<
 * # }}} Bin2D
 * 
 */
typedef YODA::Bin2D<YODA::Dbn3D>  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D;

/* "yoda/util.pxd":2
 * ## A base CppObject which prevents null pointer access
 * cdef class Base:             # <<<<<<<<<<<<<<
 *     cdef void* _ptr
 *     cdef bint _deallocate
 */
struct __pyx_obj_4yoda_4util_Base {
  PyObject_HEAD
  struct __pyx_vtabstruct_4yoda_4util_Base *__pyx_vtab;
  void *_ptr;
  int _deallocate;
  PyObject *_owner;
};


/* "include/Dbn0D.pyx":2
 * cimport util
 * cdef class Dbn0D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A zero-dimensional 'counter', used and exposed by Counter.
 */
struct __pyx_obj_4yoda_4core_Dbn0D {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Dbn1D.pyx":2
 * cimport util
 * cdef class Dbn1D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D distribution 'counter', used and exposed by 1D histograms and their bins.
 */
struct __pyx_obj_4yoda_4core_Dbn1D {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Dbn2D.pyx":2
 * cimport util
 * cdef class Dbn2D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 2D distribution 'counter', used and exposed by 2D histograms and
 */
struct __pyx_obj_4yoda_4core_Dbn2D {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Dbn3D.pyx":2
 * cimport util
 * cdef class Dbn3D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 3D distribution 'counter', used and exposed by 2D profiles and their bins.
 */
struct __pyx_obj_4yoda_4core_Dbn3D {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Bin.pyx":2
 * cimport util
 * cdef class Bin(util.Base):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.Bin* bptr(self) except NULL:
 */
struct __pyx_obj_4yoda_4core_Bin {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/generated/Bin1D_Dbn1D.pyx":8
 * # Instead, make your changes in Bin1D_DBN.pyx
 * #################################################
 * cdef class Bin1D_Dbn1D(Bin):             # <<<<<<<<<<<<<<
 *     """
 *     1D Bin based on an underlying Dbn1D.
 */
struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D {
  struct __pyx_obj_4yoda_4core_Bin __pyx_base;
};


/* "include/generated/Bin1D_Dbn2D.pyx":8
 * # Instead, make your changes in Bin1D_DBN.pyx
 * #################################################
 * cdef class Bin1D_Dbn2D(Bin):             # <<<<<<<<<<<<<<
 *     """
 *     1D Bin based on an underlying Dbn2D.
 */
struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D {
  struct __pyx_obj_4yoda_4core_Bin __pyx_base;
};


/* "include/HistoBin1D.pyx":1
 * cdef class HistoBin1D(Bin1D_Dbn1D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.HistoBin1D* hb1ptr(self) except NULL:
 */
struct __pyx_obj_4yoda_4core_HistoBin1D {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D __pyx_base;
};


/* "include/ProfileBin1D.pyx":1
 * cdef class ProfileBin1D(Bin1D_Dbn2D):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D profile bin, as stored inside Profile1D.
 */
struct __pyx_obj_4yoda_4core_ProfileBin1D {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D __pyx_base;
};


/* "include/AnalysisObject.pyx":3
 * cimport util
 * 
 * cdef class AnalysisObject(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     AnalysisObject is the base class of the main user-facing objects, such as
 */
struct __pyx_obj_4yoda_4core_AnalysisObject {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Counter.pyx":1
 * cdef class Counter(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     Weight counter. Like a histogram without any axis (and hence only one bin).
 */
struct __pyx_obj_4yoda_4core_Counter {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Histo1D.pyx":8
 * #     pass
 * 
 * cdef class Histo1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D histogram, with distinction between bin areas and heights.
 */
struct __pyx_obj_4yoda_4core_Histo1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Profile1D.pyx":2
 * cimport util
 * cdef class Profile1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D profile histogram, used to measure mean values of a y variable, binned in x.
 */
struct __pyx_obj_4yoda_4core_Profile1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/generated/Bin2D_Dbn2D.pyx":10
 * cimport util
 * # TODO: docstrings
 * cdef class Bin2D_Dbn2D(Bin):             # <<<<<<<<<<<<<<
 *     """2D Bin class templated on a Dbn2D"""
 * 
 */
struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D {
  struct __pyx_obj_4yoda_4core_Bin __pyx_base;
};


/* "include/generated/Bin2D_Dbn3D.pyx":10
 * cimport util
 * # TODO: docstrings
 * cdef class Bin2D_Dbn3D(Bin):             # <<<<<<<<<<<<<<
 *     """2D Bin class templated on a Dbn3D"""
 * 
 */
struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D {
  struct __pyx_obj_4yoda_4core_Bin __pyx_base;
};


/* "include/ProfileBin2D.pyx":2
 * #TODO improve this once we have a working Profile2D
 * cdef class ProfileBin2D(Bin2D_Dbn3D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.ProfileBin2D* pb2ptr(self) except NULL:
 */
struct __pyx_obj_4yoda_4core_ProfileBin2D {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D __pyx_base;
};


/* "include/HistoBin2D.pyx":2
 * # TODO: tidy once we have a working Histo2D
 * cdef class HistoBin2D(Bin2D_Dbn2D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.HistoBin2D* hb2ptr(self) except NULL:
 */
struct __pyx_obj_4yoda_4core_HistoBin2D {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D __pyx_base;
};


/* "include/Histo2D.pyx":2
 * cimport util
 * cdef class Histo2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D histogram.
 */
struct __pyx_obj_4yoda_4core_Histo2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Profile2D.pyx":2
 * cimport util
 * cdef class Profile2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D profile histogram, used to measure mean values of a z variable, binned in x and y.
 */
struct __pyx_obj_4yoda_4core_Profile2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Point.pyx":2
 * cimport util
 * cdef class Point(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A generic point with errors, used by the Scatter classes.
 */
struct __pyx_obj_4yoda_4core_Point {
  struct __pyx_obj_4yoda_4util_Base __pyx_base;
};


/* "include/Point1D.pyx":2
 * cimport util
 * cdef class Point1D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D point with errors, used by the Scatter1D class.
 */
struct __pyx_obj_4yoda_4core_Point1D {
  struct __pyx_obj_4yoda_4core_Point __pyx_base;
};


/* "include/Point2D.pyx":2
 * cimport util
 * cdef class Point2D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 2D point with errors, used by the Scatter2D class.
 */
struct __pyx_obj_4yoda_4core_Point2D {
  struct __pyx_obj_4yoda_4core_Point __pyx_base;
};


/* "include/Point3D.pyx":2
 * cimport util
 * cdef class Point3D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 3D point with errors, used by the Scatter3D class.
 */
struct __pyx_obj_4yoda_4core_Point3D {
  struct __pyx_obj_4yoda_4core_Point __pyx_base;
};


/* "include/Scatter1D.pyx":2
 * cimport util
 * cdef class Scatter1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D scatter plot, i.e. a collection of Point1D objects with positions and errors.
 */
struct __pyx_obj_4yoda_4core_Scatter1D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Scatter2D.pyx":2
 * cimport util
 * cdef class Scatter2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D scatter plot, i.e. a collection of Point2D objects with positions and errors.
 */
struct __pyx_obj_4yoda_4core_Scatter2D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/Scatter3D.pyx":2
 * cimport util
 * cdef class Scatter3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     3D scatter plot, i.e. a collection of Point3D objects with positions and errors.
 */
struct __pyx_obj_4yoda_4core_Scatter3D {
  struct __pyx_obj_4yoda_4core_AnalysisObject __pyx_base;
};


/* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict {
  PyObject_HEAD
  struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self;
};


/* "include/AnalysisObject.pyx":46
 *         A dict of all annotations/metadata entries."""
 *         # TODO: add a map equivalent to C++?
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())             # <<<<<<<<<<<<<<
 * 
 *     def annotation(self, k, default=None):
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_k;
};


/* "include/Histo1D.pyx":55
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Histo1D(edges, <string>path, <string>title))
 *         except:
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/Profile1D.pyx":51
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Profile1D(edges, <string>path, <string>title))
 *         except:
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_x;
};


/* "include/Point.pyx":195
 *         """
 *         err_map = self.pptr().errMap()
 *         err_map = dict((k, v) for k, v in err_map.items())             # <<<<<<<<<<<<<<
 *         return err_map
 * 
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr {
  PyObject_HEAD
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_k;
  PyObject *__pyx_v_v;
};


/* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check {
  PyObject_HEAD
  PyObject *__pyx_v_name;
  PyObject *__pyx_v_re;
};


/* "include/IO.pyx":23
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):             # <<<<<<<<<<<<<<
 *             return False
 *     if unpatterns:
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_patt;
};


/* "include/IO.pyx":29
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):             # <<<<<<<<<<<<<<
 *             return False
 *     return True
 */
struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr {
  PyObject_HEAD
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *__pyx_outer_scope;
  PyObject *__pyx_genexpr_arg_0;
  PyObject *__pyx_v_patt;
};



/* "yoda/util.pxd":2
 * ## A base CppObject which prevents null pointer access
 * cdef class Base:             # <<<<<<<<<<<<<<
 *     cdef void* _ptr
 *     cdef bint _deallocate
 */

struct __pyx_vtabstruct_4yoda_4util_Base {
  void *(*ptr)(struct __pyx_obj_4yoda_4util_Base *);
};
static struct __pyx_vtabstruct_4yoda_4util_Base *__pyx_vtabptr_4yoda_4util_Base;
static CYTHON_INLINE void *__pyx_f_4yoda_4util_4Base_ptr(struct __pyx_obj_4yoda_4util_Base *);


/* "include/Dbn0D.pyx":2
 * cimport util
 * cdef class Dbn0D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A zero-dimensional 'counter', used and exposed by Counter.
 */

struct __pyx_vtabstruct_4yoda_4core_Dbn0D {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Dbn0D *(*d0ptr)(struct __pyx_obj_4yoda_4core_Dbn0D *);
  YODA::Dbn0D *(*_Dbn0D)(struct __pyx_obj_4yoda_4core_Dbn0D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn0D *__pyx_vtabptr_4yoda_4core_Dbn0D;


/* "include/Dbn1D.pyx":2
 * cimport util
 * cdef class Dbn1D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D distribution 'counter', used and exposed by 1D histograms and their bins.
 */

struct __pyx_vtabstruct_4yoda_4core_Dbn1D {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Dbn1D *(*d1ptr)(struct __pyx_obj_4yoda_4core_Dbn1D *);
  YODA::Dbn1D *(*_Dbn1D)(struct __pyx_obj_4yoda_4core_Dbn1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn1D *__pyx_vtabptr_4yoda_4core_Dbn1D;


/* "include/Dbn2D.pyx":2
 * cimport util
 * cdef class Dbn2D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 2D distribution 'counter', used and exposed by 2D histograms and
 */

struct __pyx_vtabstruct_4yoda_4core_Dbn2D {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Dbn2D *(*d2ptr)(struct __pyx_obj_4yoda_4core_Dbn2D *);
  YODA::Dbn2D *(*_Dbn2D)(struct __pyx_obj_4yoda_4core_Dbn2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn2D *__pyx_vtabptr_4yoda_4core_Dbn2D;


/* "include/Dbn3D.pyx":2
 * cimport util
 * cdef class Dbn3D(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A 3D distribution 'counter', used and exposed by 2D profiles and their bins.
 */

struct __pyx_vtabstruct_4yoda_4core_Dbn3D {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Dbn3D *(*d3ptr)(struct __pyx_obj_4yoda_4core_Dbn3D *);
  YODA::Dbn3D *(*_Dbn3D)(struct __pyx_obj_4yoda_4core_Dbn3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Dbn3D *__pyx_vtabptr_4yoda_4core_Dbn3D;


/* "include/Bin.pyx":2
 * cimport util
 * cdef class Bin(util.Base):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.Bin* bptr(self) except NULL:
 */

struct __pyx_vtabstruct_4yoda_4core_Bin {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Bin *(*bptr)(struct __pyx_obj_4yoda_4core_Bin *);
};
static struct __pyx_vtabstruct_4yoda_4core_Bin *__pyx_vtabptr_4yoda_4core_Bin;
static CYTHON_INLINE YODA::Bin *__pyx_f_4yoda_4core_3Bin_bptr(struct __pyx_obj_4yoda_4core_Bin *);


/* "include/generated/Bin1D_Dbn1D.pyx":8
 * # Instead, make your changes in Bin1D_DBN.pyx
 * #################################################
 * cdef class Bin1D_Dbn1D(Bin):             # <<<<<<<<<<<<<<
 *     """
 *     1D Bin based on an underlying Dbn1D.
 */

struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn1D {
  struct __pyx_vtabstruct_4yoda_4core_Bin __pyx_base;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *(*b1ptr)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *);
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *(*_Bin1D)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn1D *__pyx_vtabptr_4yoda_4core_Bin1D_Dbn1D;
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *);
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *);


/* "include/generated/Bin1D_Dbn2D.pyx":8
 * # Instead, make your changes in Bin1D_DBN.pyx
 * #################################################
 * cdef class Bin1D_Dbn2D(Bin):             # <<<<<<<<<<<<<<
 *     """
 *     1D Bin based on an underlying Dbn2D.
 */

struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn2D {
  struct __pyx_vtabstruct_4yoda_4core_Bin __pyx_base;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *(*b1ptr)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *);
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *(*_Bin1D)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn2D *__pyx_vtabptr_4yoda_4core_Bin1D_Dbn2D;
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *);
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *);


/* "include/HistoBin1D.pyx":1
 * cdef class HistoBin1D(Bin1D_Dbn1D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.HistoBin1D* hb1ptr(self) except NULL:
 */

struct __pyx_vtabstruct_4yoda_4core_HistoBin1D {
  struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn1D __pyx_base;
  YODA::HistoBin1D *(*hb1ptr)(struct __pyx_obj_4yoda_4core_HistoBin1D *);
  YODA::HistoBin1D *(*_HistoBin1D)(struct __pyx_obj_4yoda_4core_HistoBin1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_HistoBin1D *__pyx_vtabptr_4yoda_4core_HistoBin1D;
static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(struct __pyx_obj_4yoda_4core_HistoBin1D *);
static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D__HistoBin1D(struct __pyx_obj_4yoda_4core_HistoBin1D *);


/* "include/ProfileBin1D.pyx":1
 * cdef class ProfileBin1D(Bin1D_Dbn2D):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D profile bin, as stored inside Profile1D.
 */

struct __pyx_vtabstruct_4yoda_4core_ProfileBin1D {
  struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn2D __pyx_base;
  YODA::ProfileBin1D *(*pb1ptr)(struct __pyx_obj_4yoda_4core_ProfileBin1D *);
  YODA::ProfileBin1D *(*_ProfileBin1D)(struct __pyx_obj_4yoda_4core_ProfileBin1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_ProfileBin1D *__pyx_vtabptr_4yoda_4core_ProfileBin1D;
static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(struct __pyx_obj_4yoda_4core_ProfileBin1D *);
static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D__ProfileBin1D(struct __pyx_obj_4yoda_4core_ProfileBin1D *);


/* "include/AnalysisObject.pyx":3
 * cimport util
 * 
 * cdef class AnalysisObject(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     AnalysisObject is the base class of the main user-facing objects, such as
 */

struct __pyx_vtabstruct_4yoda_4core_AnalysisObject {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::AnalysisObject *(*aoptr)(struct __pyx_obj_4yoda_4core_AnalysisObject *);
};
static struct __pyx_vtabstruct_4yoda_4core_AnalysisObject *__pyx_vtabptr_4yoda_4core_AnalysisObject;
static CYTHON_INLINE YODA::AnalysisObject *__pyx_f_4yoda_4core_14AnalysisObject_aoptr(struct __pyx_obj_4yoda_4core_AnalysisObject *);


/* "include/Counter.pyx":1
 * cdef class Counter(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     Weight counter. Like a histogram without any axis (and hence only one bin).
 */

struct __pyx_vtabstruct_4yoda_4core_Counter {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Counter *(*cptr)(struct __pyx_obj_4yoda_4core_Counter *);
  YODA::Counter *(*_Counter)(struct __pyx_obj_4yoda_4core_Counter *);
};
static struct __pyx_vtabstruct_4yoda_4core_Counter *__pyx_vtabptr_4yoda_4core_Counter;
static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter_cptr(struct __pyx_obj_4yoda_4core_Counter *);
static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter__Counter(struct __pyx_obj_4yoda_4core_Counter *);


/* "include/Histo1D.pyx":8
 * #     pass
 * 
 * cdef class Histo1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D histogram, with distinction between bin areas and heights.
 */

struct __pyx_vtabstruct_4yoda_4core_Histo1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Histo1D *(*h1ptr)(struct __pyx_obj_4yoda_4core_Histo1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Histo1D *__pyx_vtabptr_4yoda_4core_Histo1D;
static CYTHON_INLINE YODA::Histo1D *__pyx_f_4yoda_4core_7Histo1D_h1ptr(struct __pyx_obj_4yoda_4core_Histo1D *);


/* "include/Profile1D.pyx":2
 * cimport util
 * cdef class Profile1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D profile histogram, used to measure mean values of a y variable, binned in x.
 */

struct __pyx_vtabstruct_4yoda_4core_Profile1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Profile1D *(*p1ptr)(struct __pyx_obj_4yoda_4core_Profile1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Profile1D *__pyx_vtabptr_4yoda_4core_Profile1D;
static CYTHON_INLINE YODA::Profile1D *__pyx_f_4yoda_4core_9Profile1D_p1ptr(struct __pyx_obj_4yoda_4core_Profile1D *);


/* "include/generated/Bin2D_Dbn2D.pyx":10
 * cimport util
 * # TODO: docstrings
 * cdef class Bin2D_Dbn2D(Bin):             # <<<<<<<<<<<<<<
 *     """2D Bin class templated on a Dbn2D"""
 * 
 */

struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn2D {
  struct __pyx_vtabstruct_4yoda_4core_Bin __pyx_base;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *(*b2ptr)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *);
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *(*_Bin2D)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn2D *__pyx_vtabptr_4yoda_4core_Bin2D_Dbn2D;
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *);
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *);


/* "include/generated/Bin2D_Dbn3D.pyx":10
 * cimport util
 * # TODO: docstrings
 * cdef class Bin2D_Dbn3D(Bin):             # <<<<<<<<<<<<<<
 *     """2D Bin class templated on a Dbn3D"""
 * 
 */

struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn3D {
  struct __pyx_vtabstruct_4yoda_4core_Bin __pyx_base;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *(*b2ptr)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *);
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *(*_Bin2D)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn3D *__pyx_vtabptr_4yoda_4core_Bin2D_Dbn3D;
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *);
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *);


/* "include/ProfileBin2D.pyx":2
 * #TODO improve this once we have a working Profile2D
 * cdef class ProfileBin2D(Bin2D_Dbn3D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.ProfileBin2D* pb2ptr(self) except NULL:
 */

struct __pyx_vtabstruct_4yoda_4core_ProfileBin2D {
  struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn3D __pyx_base;
  YODA::ProfileBin2D *(*pb2ptr)(struct __pyx_obj_4yoda_4core_ProfileBin2D *);
  YODA::ProfileBin2D *(*_ProfileBin2D)(struct __pyx_obj_4yoda_4core_ProfileBin2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_ProfileBin2D *__pyx_vtabptr_4yoda_4core_ProfileBin2D;
static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(struct __pyx_obj_4yoda_4core_ProfileBin2D *);
static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D__ProfileBin2D(struct __pyx_obj_4yoda_4core_ProfileBin2D *);


/* "include/HistoBin2D.pyx":2
 * # TODO: tidy once we have a working Histo2D
 * cdef class HistoBin2D(Bin2D_Dbn2D):             # <<<<<<<<<<<<<<
 * 
 *     cdef inline c.HistoBin2D* hb2ptr(self) except NULL:
 */

struct __pyx_vtabstruct_4yoda_4core_HistoBin2D {
  struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn2D __pyx_base;
  YODA::HistoBin2D *(*hb2ptr)(struct __pyx_obj_4yoda_4core_HistoBin2D *);
  YODA::HistoBin2D *(*_HistoBin2D)(struct __pyx_obj_4yoda_4core_HistoBin2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_HistoBin2D *__pyx_vtabptr_4yoda_4core_HistoBin2D;
static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(struct __pyx_obj_4yoda_4core_HistoBin2D *);
static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D__HistoBin2D(struct __pyx_obj_4yoda_4core_HistoBin2D *);


/* "include/Histo2D.pyx":2
 * cimport util
 * cdef class Histo2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D histogram.
 */

struct __pyx_vtabstruct_4yoda_4core_Histo2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Histo2D *(*h2ptr)(struct __pyx_obj_4yoda_4core_Histo2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Histo2D *__pyx_vtabptr_4yoda_4core_Histo2D;
static CYTHON_INLINE YODA::Histo2D *__pyx_f_4yoda_4core_7Histo2D_h2ptr(struct __pyx_obj_4yoda_4core_Histo2D *);


/* "include/Profile2D.pyx":2
 * cimport util
 * cdef class Profile2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D profile histogram, used to measure mean values of a z variable, binned in x and y.
 */

struct __pyx_vtabstruct_4yoda_4core_Profile2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Profile2D *(*p2ptr)(struct __pyx_obj_4yoda_4core_Profile2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Profile2D *__pyx_vtabptr_4yoda_4core_Profile2D;
static CYTHON_INLINE YODA::Profile2D *__pyx_f_4yoda_4core_9Profile2D_p2ptr(struct __pyx_obj_4yoda_4core_Profile2D *);


/* "include/Point.pyx":2
 * cimport util
 * cdef class Point(util.Base):             # <<<<<<<<<<<<<<
 *     """
 *     A generic point with errors, used by the Scatter classes.
 */

struct __pyx_vtabstruct_4yoda_4core_Point {
  struct __pyx_vtabstruct_4yoda_4util_Base __pyx_base;
  YODA::Point *(*pptr)(struct __pyx_obj_4yoda_4core_Point *);
};
static struct __pyx_vtabstruct_4yoda_4core_Point *__pyx_vtabptr_4yoda_4core_Point;


/* "include/Point1D.pyx":2
 * cimport util
 * cdef class Point1D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 1D point with errors, used by the Scatter1D class.
 */

struct __pyx_vtabstruct_4yoda_4core_Point1D {
  struct __pyx_vtabstruct_4yoda_4core_Point __pyx_base;
  YODA::Point1D *(*p1ptr)(struct __pyx_obj_4yoda_4core_Point1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Point1D *__pyx_vtabptr_4yoda_4core_Point1D;


/* "include/Point2D.pyx":2
 * cimport util
 * cdef class Point2D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 2D point with errors, used by the Scatter2D class.
 */

struct __pyx_vtabstruct_4yoda_4core_Point2D {
  struct __pyx_vtabstruct_4yoda_4core_Point __pyx_base;
  YODA::Point2D *(*p2ptr)(struct __pyx_obj_4yoda_4core_Point2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Point2D *__pyx_vtabptr_4yoda_4core_Point2D;


/* "include/Point3D.pyx":2
 * cimport util
 * cdef class Point3D(Point):             # <<<<<<<<<<<<<<
 *     """
 *     A 3D point with errors, used by the Scatter3D class.
 */

struct __pyx_vtabstruct_4yoda_4core_Point3D {
  struct __pyx_vtabstruct_4yoda_4core_Point __pyx_base;
  YODA::Point3D *(*p3ptr)(struct __pyx_obj_4yoda_4core_Point3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Point3D *__pyx_vtabptr_4yoda_4core_Point3D;


/* "include/Scatter1D.pyx":2
 * cimport util
 * cdef class Scatter1D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     1D scatter plot, i.e. a collection of Point1D objects with positions and errors.
 */

struct __pyx_vtabstruct_4yoda_4core_Scatter1D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Scatter1D *(*s1ptr)(struct __pyx_obj_4yoda_4core_Scatter1D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Scatter1D *__pyx_vtabptr_4yoda_4core_Scatter1D;
static CYTHON_INLINE YODA::Scatter1D *__pyx_f_4yoda_4core_9Scatter1D_s1ptr(struct __pyx_obj_4yoda_4core_Scatter1D *);


/* "include/Scatter2D.pyx":2
 * cimport util
 * cdef class Scatter2D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     2D scatter plot, i.e. a collection of Point2D objects with positions and errors.
 */

struct __pyx_vtabstruct_4yoda_4core_Scatter2D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Scatter2D *(*s2ptr)(struct __pyx_obj_4yoda_4core_Scatter2D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Scatter2D *__pyx_vtabptr_4yoda_4core_Scatter2D;
static CYTHON_INLINE YODA::Scatter2D *__pyx_f_4yoda_4core_9Scatter2D_s2ptr(struct __pyx_obj_4yoda_4core_Scatter2D *);


/* "include/Scatter3D.pyx":2
 * cimport util
 * cdef class Scatter3D(AnalysisObject):             # <<<<<<<<<<<<<<
 *     """
 *     3D scatter plot, i.e. a collection of Point3D objects with positions and errors.
 */

struct __pyx_vtabstruct_4yoda_4core_Scatter3D {
  struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_base;
  YODA::Scatter3D *(*s3ptr)(struct __pyx_obj_4yoda_4core_Scatter3D *);
};
static struct __pyx_vtabstruct_4yoda_4core_Scatter3D *__pyx_vtabptr_4yoda_4core_Scatter3D;
static CYTHON_INLINE YODA::Scatter3D *__pyx_f_4yoda_4core_9Scatter3D_s3ptr(struct __pyx_obj_4yoda_4core_Scatter3D *);
/* #### Code section: utility_code_proto ### */

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, Py_ssize_t);
    void (*DECREF)(void*, PyObject*, Py_ssize_t);
    void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    void* (*SetupContext)(const char*, Py_ssize_t, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          if (acquire_gil) {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
              PyGILState_Release(__pyx_gilstate_save);\
          } else {\
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__));\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), (__LINE__), (__FILE__))
  #define __Pyx_RefNannyFinishContextNogil() __Pyx_RefNannyFinishContext()
#endif
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #define __Pyx_RefNannyFinishContext()\
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), (__LINE__))
  #define __Pyx_XINCREF(r)  do { if((r) == NULL); else {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContextNogil()
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif
#define __Pyx_Py_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; Py_XDECREF(tmp);\
    } while (0)
#define __Pyx_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_XDECREF(tmp);\
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; __Pyx_DECREF(tmp);\
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#if PY_VERSION_HEX >= 0x030C00A6
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
#else
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
#endif
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* PyObjectGetAttrStrNoError.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* RaiseTooManyValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

/* RaiseNeedMoreValuesToUnpack.proto */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

/* IterFinish.proto */
static CYTHON_INLINE int __Pyx_IterFinish(void);

/* UnpackItemEndCheck.proto */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);

/* PyObjectCall.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs);
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
#if !CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03080000
  #include "frameobject.h"
#if PY_VERSION_HEX >= 0x030b00a6
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
  #define __Pxy_PyFrame_Initialize_Offsets()
  #define __Pyx_PyFrame_GetLocalsplus(frame)  ((frame)->f_localsplus)
#else
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()\
    ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
     (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
  #define __Pyx_PyFrame_GetLocalsplus(frame)\
    (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
#endif
#endif

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectFastCall.proto */
#define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs);

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* TupleAndListFromArray.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
#endif

/* IncludeStringH.proto */
#include <string.h>

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* fastcall.proto */
#define __Pyx_Arg_VARARGS(args, i) PyTuple_GET_ITEM(args, i)
#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
#define __Pyx_KwValues_VARARGS(args, nargs) NULL
#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
#if CYTHON_METH_FASTCALL
    #define __Pyx_Arg_FASTCALL(args, i) args[i]
    #define __Pyx_NumKwargs_FASTCALL(kwds) PyTuple_GET_SIZE(kwds)
    #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
#else
    #define __Pyx_Arg_FASTCALL __Pyx_Arg_VARARGS
    #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_VARARGS(args, start), stop - start)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(&__Pyx_Arg_FASTCALL(args, start), stop - start)
#else
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* RaiseArgTupleInvalid.proto */
static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);

/* KeywordStringCheck.proto */
static int __Pyx_CheckKeywordStrings(PyObject *kw, const char* function_name, int kw_allowed);

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject *const *kwvalues,
    PyObject **argnames[],
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,
    const char* function_name);

/* ArgTypeTest.proto */
#define __Pyx_ArgTypeTest(obj, type, none_allowed, name, exact)\
    ((likely(__Pyx_IS_TYPE(obj, type) | (none_allowed && (obj == Py_None)))) ? 1 :\
        __Pyx__ArgTypeTest(obj, type, name, exact))
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact);

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  do {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* MoveIfSupported.proto */
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600)
  #include <utility>
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) std::move(x)
#else
  #define __PYX_STD_MOVE_IF_SUPPORTED(x) x
#endif

/* PyObjectCallNoArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* ListCompAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

/* RaiseUnboundLocalError.proto */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);

/* RaiseClosureNameError.proto */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* ImportFrom.proto */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);

/* pybytes_as_double.proto */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj);
static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length);
static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) {
    return __Pyx__PyBytes_AsDouble(obj, PyBytes_AS_STRING(obj), PyBytes_GET_SIZE(obj));
}
static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) {
    return __Pyx__PyBytes_AsDouble(obj, PyByteArray_AS_STRING(obj), PyByteArray_GET_SIZE(obj));
}

/* pyunicode_as_double.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) {
    int last_was_punctuation;
    Py_ssize_t i;
    last_was_punctuation = 1;
    for (i=start; i <= end; i++) {
        Py_UCS4 chr = PyUnicode_READ(kind, data, i);
        int is_punctuation = (chr == '_') | (chr == '.');
        *buffer = (char)chr;
        buffer += (chr != '_');
        if (unlikely(chr > 127)) goto parse_failure;
        if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure;
        last_was_punctuation = is_punctuation;
    }
    if (unlikely(last_was_punctuation)) goto parse_failure;
    *buffer = '\0';
    return buffer;
parse_failure:
    return NULL;
}
static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) {
    int matches = 1;
    Py_UCS4 chr;
    Py_UCS4 sign = PyUnicode_READ(kind, data, start);
    int is_signed = (sign == '-') | (sign == '+');
    start += is_signed;
    length -= is_signed;
    switch (PyUnicode_READ(kind, data, start)) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'a') | (chr == 'A');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'n') | (chr == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'f') | (chr == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+3);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+4);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+5);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+6);
            matches &= (chr == 't') | (chr == 'T');
            chr = PyUnicode_READ(kind, data, start+7);
            matches &= (chr == 'y') | (chr == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) {
    double value;
    const char *last;
    char *end;
    Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj);
    const int kind = PyUnicode_KIND(obj);
    const void* data = PyUnicode_DATA(obj);
    start = 0;
    while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start)))
        start++;
    while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1)))
        length--;
    length -= start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    if (length < 40) {
        char number[40];
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}
#endif
static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) {
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
    if (unlikely(__Pyx_PyUnicode_READY(obj) == -1))
        return (double)-1;
    if (likely(PyUnicode_IS_ASCII(obj))) {
        const char *s;
        Py_ssize_t length;
        s = PyUnicode_AsUTF8AndSize(obj, &length);
        return __Pyx__PyBytes_AsDouble(obj, s, length);
    }
    return __Pyx_PyUnicode_AsDouble_WithSpaces(obj);
#else
    return __Pyx_SlowPyString_AsDouble(obj);
#endif
}

/* pynumber_float.proto */
static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj);
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : __Pyx__PyNumber_Float(x))

/* PyIntCompare.proto */
static CYTHON_INLINE int __Pyx_PyInt_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* GetAttr.proto */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *, PyObject *);

/* HasAttr.proto */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *, PyObject *);

/* ImportDottedModule.proto */
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);
#endif

/* ImportDottedModuleRelFirst.proto */
static PyObject *__Pyx_ImportDottedModuleRelFirst(PyObject *name, PyObject *parts_tuple);

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* SliceObject.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
        PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
        int has_cstart, int has_cstop, int wraparound);

/* PyFloatBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace, zerodivision_check)\
    ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
    #endif

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;

/* CallUnboundCMethod2.proto */
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
#else
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif

/* SliceTupleAndList.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(PyObject* src, Py_ssize_t start, Py_ssize_t stop);
#else
#define __Pyx_PyList_GetSlice(seq, start, stop)   PySequence_GetSlice(seq, start, stop)
#define __Pyx_PyTuple_GetSlice(seq, start, stop)  PySequence_GetSlice(seq, start, stop)
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* PyObjectGetMethod.proto */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* RaiseNoneIterError.proto */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);

/* UnpackTupleError.proto */
static void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);

/* UnpackTuple2.proto */
#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\
    (likely(is_tuple || PyTuple_Check(tuple)) ?\
        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\
            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\
            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\
        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);
static int __Pyx_unpack_tuple2_generic(
    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);

/* dict_iter.proto */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_is_dict);
static CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,
                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* PyIntCompare.proto */
static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* StrEquals.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
#else
#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
#endif

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* PyIntBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
#endif

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* AssertionsEnabled.proto */
#define __Pyx_init_assertions_enabled()
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
  #define __pyx_assertions_enabled() (1)
#elif PY_VERSION_HEX < 0x03080000  ||  CYTHON_COMPILING_IN_PYPY  ||  defined(Py_LIMITED_API)
  #define __pyx_assertions_enabled() (!Py_OptimizeFlag)
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030900A6
  static int __pyx_assertions_enabled_flag;
  #define __pyx_assertions_enabled() (__pyx_assertions_enabled_flag)
  #undef __Pyx_init_assertions_enabled
  static void __Pyx_init_assertions_enabled(void) {
    __pyx_assertions_enabled_flag = ! _PyInterpreterState_GetConfig(__Pyx_PyThreadState_Current->interp)->optimization_level;
  }
#else
  #define __pyx_assertions_enabled() (!Py_OptimizeFlag)
#endif

/* Globals.proto */
static PyObject* __Pyx_Globals(void);

/* DictGetItem.proto */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);
#define __Pyx_PyObject_Dict_GetItem(obj, name)\
    (likely(PyDict_CheckExact(obj)) ?\
     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))
#else
#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)
#endif

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
#define __Pyx_PyObject_LookupSpecial(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* PyObject_Unicode.proto */
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))
#else
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Unicode(obj))
#endif

/* py_dict_items.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d);

/* CallUnboundCMethod0.proto */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CallUnboundCMethod0(cfunc, self)\
    (likely((cfunc)->func) ?\
        (likely((cfunc)->flag == METH_NOARGS) ?  (*((cfunc)->func))(self, NULL) :\
         (PY_VERSION_HEX >= 0x030600B1 && likely((cfunc)->flag == METH_FASTCALL) ?\
            (PY_VERSION_HEX >= 0x030700A0 ?\
                (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0) :\
                (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL)) :\
          (PY_VERSION_HEX >= 0x030700A0 && (cfunc)->flag == (METH_FASTCALL | METH_KEYWORDS) ?\
            (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, &__pyx_empty_tuple, 0, NULL) :\
            (likely((cfunc)->flag == (METH_VARARGS | METH_KEYWORDS)) ?  ((*(PyCFunctionWithKeywords)(void*)(PyCFunction)(cfunc)->func)(self, __pyx_empty_tuple, NULL)) :\
               ((cfunc)->flag == METH_VARARGS ?  (*((cfunc)->func))(self, __pyx_empty_tuple) :\
               __Pyx__CallUnboundCMethod0(cfunc, self)))))) :\
        __Pyx__CallUnboundCMethod0(cfunc, self))
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* PyObject_Str.proto */
#define __Pyx_PyObject_Str(obj)\
    (likely(PyString_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))

/* CallNextTpDealloc.proto */
static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc);

/* CallNextTpTraverse.proto */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse);

/* CallNextTpClear.proto */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_0_0
#define __PYX_HAVE_RT_ImportType_proto_3_0_0
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_0(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_0_0(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_0_0 {
   __Pyx_ImportType_CheckSize_Error_3_0_0 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_0_0 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_0_0 = 2
};
static PyTypeObject *__Pyx_ImportType_3_0_0(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_0 check_size);
#endif

/* GetVTable.proto */
static void* __Pyx_GetVtable(PyTypeObject *type);

/* IncludeStructmemberH.proto */
#include <structmember.h>

/* FixUpExtensionType.proto */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);
#endif

/* ValidateBasesTuple.proto */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
#endif

/* PyType_Ready.proto */
CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);

/* PyObject_GenericGetAttrNoDict.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttrNoDict PyObject_GenericGetAttr
#endif

/* PyObject_GenericGetAttr.proto */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GenericGetAttr PyObject_GenericGetAttr
#endif

/* SetVTable.proto */
static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);

/* MergeVTables.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type);
#endif

/* SetupReduce.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce(PyObject* type_obj);
#endif

/* FetchSharedCythonModule.proto */
static PyObject *__Pyx_FetchSharedCythonABIModule(void);

/* FetchCommonType.proto */
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
#else
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases);
#endif

/* PyMethodNew.proto */
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    return PyMethod_New(func, self);
}
#else
    #define __Pyx_PyMethod_New PyMethod_New
#endif

/* PyVectorcallFastCallDict.proto */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
#endif

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CYFUNCTION_COROUTINE     0x08
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#if PY_VERSION_HEX < 0x030900B1
  #define __Pyx_CyFunction_GetClassObj(f)\
      (((__pyx_CyFunctionObject *) (f))->func_classobj)
#else
  #define __Pyx_CyFunction_GetClassObj(f)\
      ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
#endif
#define __Pyx_CyFunction_SetClassObj(f, classobj)\
    __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
#if PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_BACKPORT_VECTORCALL
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if PY_VERSION_HEX < 0x030500A0
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
#if PY_VERSION_HEX < 0x030900B1
    PyObject *func_classobj;
#endif
    void *defaults;
    int defaults_pyobjects;
    size_t defaults_size;  // used by FusedFunction for copying defaults
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_CyFunctionType)
#define __Pyx_IsCyOrPyCFunction(obj)  __Pyx_TypeCheck2(obj, __pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_CyFunctionType)
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
                                                         size_t size,
                                                         int pyobjects);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(PyObject *module);
#if CYTHON_METH_FASTCALL
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#if CYTHON_BACKPORT_VECTORCALL
#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
#else
#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
#endif
#endif

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* SetNameInClass.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
#elif CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
#else
#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
#endif

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* PyObjectCall2Args.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* Py3ClassCreate.proto */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
                                           PyObject *mkw, PyObject *modname, PyObject *doc);
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);

/* CLineInTraceback.proto */
#ifdef CYTHON_CLINE_IN_TRACEBACK
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#else
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#endif

/* CodeObjectCache.proto */
#if !CYTHON_COMPILING_IN_LIMITED_API
typedef struct {
    PyCodeObject* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
#endif

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* GCCDiagnostics.proto */
#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* CppExceptionConversion.proto */
#ifndef __Pyx_CppExn2PyErr
#include <new>
#include <typeinfo>
#include <stdexcept>
#include <ios>
static void __Pyx_CppExn2PyErr() {
  try {
    if (PyErr_Occurred())
      ; // let the latest Python exn pass through and ignore the current one
    else
      throw;
  } catch (const std::bad_alloc& exn) {
    PyErr_SetString(PyExc_MemoryError, exn.what());
  } catch (const std::bad_cast& exn) {
    PyErr_SetString(PyExc_TypeError, exn.what());
  } catch (const std::bad_typeid& exn) {
    PyErr_SetString(PyExc_TypeError, exn.what());
  } catch (const std::domain_error& exn) {
    PyErr_SetString(PyExc_ValueError, exn.what());
  } catch (const std::invalid_argument& exn) {
    PyErr_SetString(PyExc_ValueError, exn.what());
  } catch (const std::ios_base::failure& exn) {
    PyErr_SetString(PyExc_IOError, exn.what());
  } catch (const std::out_of_range& exn) {
    PyErr_SetString(PyExc_IndexError, exn.what());
  } catch (const std::overflow_error& exn) {
    PyErr_SetString(PyExc_OverflowError, exn.what());
  } catch (const std::range_error& exn) {
    PyErr_SetString(PyExc_ArithmeticError, exn.what());
  } catch (const std::underflow_error& exn) {
    PyErr_SetString(PyExc_ArithmeticError, exn.what());
  } catch (const std::exception& exn) {
    PyErr_SetString(PyExc_RuntimeError, exn.what());
  }
  catch (...)
  {
    PyErr_SetString(PyExc_RuntimeError, "Unknown exception");
  }
}
#endif

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

/* CIntFromPy.proto */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *);

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
static __Pyx_TypeName __Pyx_PyType_GetName(PyTypeObject* tp);
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#else
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))
#endif
#define __Pyx_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* CoroutineBase.proto */
struct __pyx_CoroutineObject;
typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_ExcInfoStruct  _PyErr_StackItem
#else
typedef struct {
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
} __Pyx_ExcInfoStruct;
#endif
typedef struct __pyx_CoroutineObject {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    __Pyx_ExcInfoStruct gi_exc_state;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    PyObject *gi_code;
    PyObject *gi_frame;
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Coroutine_Close(PyObject *self);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_Coroutine_SwapException(self)
#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
#else
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
    }
#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);

/* PatchModuleWithCoroutine.proto */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code);

/* PatchGeneratorABC.proto */
static int __Pyx_patch_abc(void);

/* Generator.proto */
#define __Pyx_Generator_USED
#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(PyObject *module);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(void);

/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);

/* #### Code section: module_declarations ### */
static CYTHON_INLINE void *__pyx_f_4yoda_4util_4Base_ptr(struct __pyx_obj_4yoda_4util_Base *__pyx_v_self); /* proto*/
static YODA::Dbn0D *__pyx_f_4yoda_4core_5Dbn0D_d0ptr(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto*/
static YODA::Dbn0D *__pyx_f_4yoda_4core_5Dbn0D__Dbn0D(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto*/
static YODA::Dbn1D *__pyx_f_4yoda_4core_5Dbn1D_d1ptr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto*/
static YODA::Dbn1D *__pyx_f_4yoda_4core_5Dbn1D__Dbn1D(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto*/
static YODA::Dbn2D *__pyx_f_4yoda_4core_5Dbn2D_d2ptr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto*/
static YODA::Dbn2D *__pyx_f_4yoda_4core_5Dbn2D__Dbn2D(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto*/
static YODA::Dbn3D *__pyx_f_4yoda_4core_5Dbn3D_d3ptr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto*/
static YODA::Dbn3D *__pyx_f_4yoda_4core_5Dbn3D__Dbn3D(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter_cptr(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter__Counter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Bin *__pyx_f_4yoda_4core_3Bin_bptr(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D__HistoBin1D(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D__ProfileBin1D(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::AnalysisObject *__pyx_f_4yoda_4core_14AnalysisObject_aoptr(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Histo1D *__pyx_f_4yoda_4core_7Histo1D_h1ptr(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Profile1D *__pyx_f_4yoda_4core_9Profile1D_p1ptr(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D__ProfileBin2D(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D__HistoBin2D(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Histo2D *__pyx_f_4yoda_4core_7Histo2D_h2ptr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Profile2D *__pyx_f_4yoda_4core_9Profile2D_p2ptr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto*/
static YODA::Point *__pyx_f_4yoda_4core_5Point_pptr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto*/
static YODA::Point1D *__pyx_f_4yoda_4core_7Point1D_p1ptr(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto*/
static YODA::Point2D *__pyx_f_4yoda_4core_7Point2D_p2ptr(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto*/
static YODA::Point3D *__pyx_f_4yoda_4core_7Point3D_p3ptr(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Scatter1D *__pyx_f_4yoda_4core_9Scatter1D_s1ptr(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Scatter2D *__pyx_f_4yoda_4core_9Scatter2D_s2ptr(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto*/
static CYTHON_INLINE YODA::Scatter3D *__pyx_f_4yoda_4core_9Scatter3D_s3ptr(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto*/

/* Module declarations from "libc.string" */

/* Module declarations from "libcpp.string" */

/* Module declarations from "libcpp.vector" */

/* Module declarations from "libcpp.utility" */

/* Module declarations from "libcpp.pair" */

/* Module declarations from "libcpp.map" */

/* Module declarations from "libcpp.unordered_map" */

/* Module declarations from "libcpp" */

/* Module declarations from "yoda.declarations" */

/* Module declarations from "yoda.util" */
static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_set_owned_ptr(struct __pyx_obj_4yoda_4util_Base *, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_set_borrowed_ptr(struct __pyx_obj_4yoda_4util_Base *, void *, PyObject *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_new_owned_cls(PyObject *, void *); /*proto*/
static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_new_borrowed_cls(PyObject *, void *, PyObject *); /*proto*/
static CYTHON_INLINE size_t __pyx_f_4yoda_4util_pythonic_index(int, size_t); /*proto*/

/* Module declarations from "libc.stdio" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.type" */

/* Module declarations from "cpython" */

/* Module declarations from "cpython.object" */

/* Module declarations from "cpython.exc" */

/* Module declarations from "yoda.core" */
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_Exception;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_BinningError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_RangeError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_LockError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_GridError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_LogicError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_LowStatsError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_WeightError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_AnnotationError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_ReadError;
__PYX_EXTERN_C DL_EXPORT(PyObject) *YodaExc_UserError;
static PyObject *__pyx_f_4yoda_4core__aobjects_to_list(std::vector<YODA::AnalysisObject *>  *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4yoda_4core__aobjects_to_dict(std::vector<YODA::AnalysisObject *>  *, PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_4yoda_4core__idxMap_to_dict(std::unordered_map<std::string,std::unordered_map<std::string,int> >  *); /*proto*/
static PyObject *__pyx_f_4yoda_4core_mkIndex(YODA::Reader &, std::string); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &); /*proto*/
static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_string(std::vector<std::string>  const &); /*proto*/
static std::string __pyx_convert_string_from_py_std__in_string(PyObject *); /*proto*/
static std::vector<double>  __pyx_convert_vector_from_py_double(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_double(std::vector<double>  const &); /*proto*/
static PyObject *__pyx_convert_pair_to_py_double____double(std::pair<double,double>  const &); /*proto*/
static std::pair<double,double>  __pyx_convert_pair_from_py_double__and_double(PyObject *); /*proto*/
static PyObject *__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(std::map<std::string,std::pair<double,double> >  const &); /*proto*/
static std::vector<size_t>  __pyx_convert_vector_from_py_size_t(PyObject *); /*proto*/
static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(std::vector<std::vector<double> >  const &); /*proto*/
static std::vector<int>  __pyx_convert_vector_from_py_int(PyObject *); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "yoda.core"
extern int __pyx_module_is_main_yoda__core;
int __pyx_module_is_main_yoda__core = 0;

/* Implementation of "yoda.core" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_ImportError;
static PyObject *__pyx_builtin_min;
static PyObject *__pyx_builtin_max;
static PyObject *__pyx_builtin_zip;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_sum;
static PyObject *__pyx_builtin_AssertionError;
static PyObject *__pyx_builtin_open;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_IndexError;
/* #### Code section: string_decls ### */
static const char __pyx_k_a[] = "a";
static const char __pyx_k_b[] = "b";
static const char __pyx_k_d[] = "d";
static const char __pyx_k_e[] = "e";
static const char __pyx_k_f[] = "f";
static const char __pyx_k_h[] = "h";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_k[] = "k";
static const char __pyx_k_n[] = "n";
static const char __pyx_k_p[] = "p";
static const char __pyx_k_s[] = "s";
static const char __pyx_k_v[] = "v";
static const char __pyx_k_w[] = "w";
static const char __pyx_k_x[] = "x";
static const char __pyx_k_y[] = "y";
static const char __pyx_k_z[] = "z";
static const char __pyx_k_AO[] = "AO";
static const char __pyx_k_XY[] = "XY";
static const char __pyx_k__2[] = "";
static const char __pyx_k__3[] = ".";
static const char __pyx_k__4[] = "*";
static const char __pyx_k__8[] = "-";
static const char __pyx_k_ao[] = "ao";
static const char __pyx_k_ax[] = "ax";
static const char __pyx_k_ay[] = "ay";
static const char __pyx_k_az[] = "az";
static const char __pyx_k_da[] = "da";
static const char __pyx_k_dx[] = "dx";
static const char __pyx_k_es[] = "es";
static const char __pyx_k_fn[] = "fn";
static const char __pyx_k_gc[] = "gc";
static const char __pyx_k_ia[] = "ia";
static const char __pyx_k_ib[] = "ib";
static const char __pyx_k_io[] = "io";
static const char __pyx_k_ix[] = "ix";
static const char __pyx_k_rb[] = "rb";
static const char __pyx_k_re[] = "re";
static const char __pyx_k_s1[] = "s1";
static const char __pyx_k_s2[] = "s2";
static const char __pyx_k_s3[] = "s3";
static const char __pyx_k_sd[] = "sd";
static const char __pyx_k_xs[] = "xs";
static const char __pyx_k_ys[] = "ys";
static const char __pyx_k_zs[] = "zs";
static const char __pyx_k_Bin[] = "Bin";
static const char __pyx_k_H1D[] = "H1D";
static const char __pyx_k_H2D[] = "H2D";
static const char __pyx_k_P1D[] = "P1D";
static const char __pyx_k_P2D[] = "P2D";
static const char __pyx_k_S1D[] = "S1D";
static const char __pyx_k_S2D[] = "S2D";
static const char __pyx_k_S3D[] = "S3D";
static const char __pyx_k_XYZ[] = "XYZ";
static const char __pyx_k__11[] = "\n";
static const char __pyx_k_ao1[] = "ao1";
static const char __pyx_k_ao2[] = "ao2";
static const char __pyx_k_arg[] = "arg";
static const char __pyx_k_bin[] = "bin";
static const char __pyx_k_dim[] = "dim";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_end[] = "end";
static const char __pyx_k_err[] = "err";
static const char __pyx_k_idx[] = "idx";
static const char __pyx_k_iss[] = "iss";
static const char __pyx_k_key[] = "key";
static const char __pyx_k_low[] = "low";
static const char __pyx_k_max[] = "max";
static const char __pyx_k_min[] = "min";
static const char __pyx_k_n_2[] = "\\n";
static const char __pyx_k_new[] = "__new__";
static const char __pyx_k_oss[] = "oss";
static const char __pyx_k_rms[] = "rms";
static const char __pyx_k_row[] = "row";
static const char __pyx_k_rtn[] = "rtn";
static const char __pyx_k_s_s[] = "<%s '%s'>";
static const char __pyx_k_set[] = "set";
static const char __pyx_k_str[] = "str";
static const char __pyx_k_sum[] = "sum";
static const char __pyx_k_sys[] = "sys";
static const char __pyx_k_val[] = "val";
static const char __pyx_k_var[] = "var";
static const char __pyx_k_vec[] = "vec";
static const char __pyx_k_vol[] = "vol";
static const char __pyx_k_zip[] = "zip";
static const char __pyx_k_0_2e[] = "%0.2e";
static const char __pyx_k__977[] = "?";
static const char __pyx_k_area[] = "area";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_asum[] = "asum";
static const char __pyx_k_bins[] = "bins";
static const char __pyx_k_cbin[] = "cbin";
static const char __pyx_k_copy[] = "copy";
static const char __pyx_k_corr[] = "corr";
static const char __pyx_k_dict[] = "dict";
static const char __pyx_k_dump[] = "dump";
static const char __pyx_k_edge[] = "edge";
static const char __pyx_k_elem[] = "elem";
static const char __pyx_k_errW[] = "errW";
static const char __pyx_k_errs[] = "errs";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_fill[] = "fill";
static const char __pyx_k_foci[] = "foci";
static const char __pyx_k_fptr[] = "fptr";
static const char __pyx_k_high[] = "high";
static const char __pyx_k_idxs[] = "idxs";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_iter[] = "__iter__";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_mean[] = "mean";
static const char __pyx_k_mknp[] = "_mknp";
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_open[] = "open";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_read[] = "read";
static const char __pyx_k_repr[] = "__repr__";
static const char __pyx_k_seek[] = "seek";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_setX[] = "setX";
static const char __pyx_k_setY[] = "setY";
static const char __pyx_k_setZ[] = "setZ";
static const char __pyx_k_spec[] = "__spec__";
static const char __pyx_k_sumW[] = "sumW";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_type[] = "type";
static const char __pyx_k_util[] = "util";
static const char __pyx_k_vars[] = "vars";
static const char __pyx_k_xMax[] = "xMax";
static const char __pyx_k_xMid[] = "xMid";
static const char __pyx_k_xMin[] = "xMin";
static const char __pyx_k_xRMS[] = "xRMS";
static const char __pyx_k_xlow[] = "xlow";
static const char __pyx_k_xmax[] = "xmax";
static const char __pyx_k_xmin[] = "xmin";
static const char __pyx_k_yMax[] = "yMax";
static const char __pyx_k_yMid[] = "yMid";
static const char __pyx_k_yMin[] = "yMin";
static const char __pyx_k_yRMS[] = "yRMS";
static const char __pyx_k_ylow[] = "ylow";
static const char __pyx_k_yoda[] = "yoda";
static const char __pyx_k_zMax[] = "zMax";
static const char __pyx_k_zMin[] = "zMin";
static const char __pyx_k_Dbn0D[] = "Dbn0D";
static const char __pyx_k_Dbn1D[] = "Dbn1D";
static const char __pyx_k_Dbn2D[] = "Dbn2D";
static const char __pyx_k_Dbn3D[] = "Dbn3D";
static const char __pyx_k_Index[] = "Index";
static const char __pyx_k_Point[] = "Point";
static const char __pyx_k_areas[] = "areas";
static const char __pyx_k_array[] = "array";
static const char __pyx_k_asymm[] = "asymm";
static const char __pyx_k_begin[] = "begin";
static const char __pyx_k_binAt[] = "binAt";
static const char __pyx_k_cbins[] = "cbins";
static const char __pyx_k_class[] = "__class__";
static const char __pyx_k_clone[] = "clone";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_edges[] = "edges";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_init2[] = "__init2";
static const char __pyx_k_init3[] = "__init3";
static const char __pyx_k_init4[] = "__init4";
static const char __pyx_k_init5[] = "__init5";
static const char __pyx_k_init8[] = "__init8";
static const char __pyx_k_istxt[] = "_istxt";
static const char __pyx_k_items[] = "items";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_merge[] = "merge";
static const char __pyx_k_nbins[] = "nbins";
static const char __pyx_k_numpy[] = "numpy";
static const char __pyx_k_other[] = "other";
static const char __pyx_k_p1ptr[] = "p1ptr";
static const char __pyx_k_point[] = "point";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_rebin[] = "rebin";
static const char __pyx_k_reset[] = "reset";
static const char __pyx_k_s2ptr[] = "s2ptr";
static const char __pyx_k_scale[] = "scale";
static const char __pyx_k_stdin[] = "stdin";
static const char __pyx_k_strip[] = "strip";
static const char __pyx_k_sumW2[] = "sumW2";
static const char __pyx_k_sumWX[] = "sumWX";
static const char __pyx_k_sumWY[] = "sumWY";
static const char __pyx_k_sumWZ[] = "sumWZ";
static const char __pyx_k_sumWs[] = "sumWs";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_title[] = "title";
static const char __pyx_k_upper[] = "upper";
static const char __pyx_k_utf_8[] = "utf-8";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_xErrs[] = "xErrs";
static const char __pyx_k_xFoci[] = "xFoci";
static const char __pyx_k_xMaxs[] = "xMaxs";
static const char __pyx_k_xMean[] = "xMean";
static const char __pyx_k_xMids[] = "xMids";
static const char __pyx_k_xMins[] = "xMins";
static const char __pyx_k_xVals[] = "xVals";
static const char __pyx_k_xcuts[] = "xcuts";
static const char __pyx_k_xerrs[] = "xerrs";
static const char __pyx_k_xhigh[] = "xhigh";
static const char __pyx_k_xyMax[] = "xyMax";
static const char __pyx_k_xyMid[] = "xyMid";
static const char __pyx_k_xyMin[] = "xyMin";
static const char __pyx_k_xyRMS[] = "xyRMS";
static const char __pyx_k_yErrs[] = "yErrs";
static const char __pyx_k_yFoci[] = "yFoci";
static const char __pyx_k_yMaxs[] = "yMaxs";
static const char __pyx_k_yMean[] = "yMean";
static const char __pyx_k_yMids[] = "yMids";
static const char __pyx_k_yMins[] = "yMins";
static const char __pyx_k_yVals[] = "yVals";
static const char __pyx_k_ycuts[] = "ycuts";
static const char __pyx_k_yerrs[] = "yerrs";
static const char __pyx_k_yhigh[] = "yhigh";
static const char __pyx_k_zErrs[] = "zErrs";
static const char __pyx_k_zMaxs[] = "zMaxs";
static const char __pyx_k_zMins[] = "zMins";
static const char __pyx_k_zVals[] = "zVals";
static const char __pyx_k_zerrs[] = "zerrs";
static const char __pyx_k_addBin[] = "addBin";
static const char __pyx_k_aolist[] = "aolist";
static const char __pyx_k_asdict[] = "asdict";
static const char __pyx_k_asgrid[] = "asgrid";
static const char __pyx_k_buffer[] = "buffer";
static const char __pyx_k_cedges[] = "cedges";
static const char __pyx_k_ctypes[] = "ctypes";
static const char __pyx_k_dict_2[] = "__dict__";
static const char __pyx_k_divide[] = "divide";
static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_errAvg[] = "errAvg";
static const char __pyx_k_errMap[] = "errMap";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_height[] = "height";
static const char __pyx_k_import[] = "__import__";
static const char __pyx_k_init_2[] = "__init_2";
static const char __pyx_k_init_3[] = "__init_3";
static const char __pyx_k_kwargs[] = "kwargs";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_name_2[] = "name";
static const char __pyx_k_normto[] = "normto";
static const char __pyx_k_nxbins[] = "nxbins";
static const char __pyx_k_nybins[] = "nybins";
static const char __pyx_k_others[] = "others";
static const char __pyx_k_points[] = "points";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_relErr[] = "relErr";
static const char __pyx_k_repeat[] = "repeat";
static const char __pyx_k_sample[] = "sample";
static const char __pyx_k_scaleW[] = "scaleW";
static const char __pyx_k_scaleX[] = "scaleX";
static const char __pyx_k_scaleY[] = "scaleY";
static const char __pyx_k_scaleZ[] = "scaleZ";
static const char __pyx_k_search[] = "search";
static const char __pyx_k_setErr[] = "setErr";
static const char __pyx_k_setVal[] = "setVal";
static const char __pyx_k_source[] = "source";
static const char __pyx_k_stdDev[] = "stdDev";
static const char __pyx_k_stdErr[] = "stdErr";
static const char __pyx_k_stdout[] = "stdout";
static const char __pyx_k_sumWX2[] = "sumWX2";
static const char __pyx_k_sumWXY[] = "sumWXY";
static const char __pyx_k_sumWXZ[] = "sumWXZ";
static const char __pyx_k_sumWY2[] = "sumWY2";
static const char __pyx_k_sumWYZ[] = "sumWYZ";
static const char __pyx_k_sumWZ2[] = "sumWZ2";
static const char __pyx_k_toDict[] = "toDict";
static const char __pyx_k_tuples[] = "tuples";
static const char __pyx_k_unique[] = "unique";
static const char __pyx_k_values[] = "values";
static const char __pyx_k_volume[] = "volume";
static const char __pyx_k_weight[] = "weight";
static const char __pyx_k_xEdges[] = "xEdges";
static const char __pyx_k_xFocus[] = "xFocus";
static const char __pyx_k_xWidth[] = "xWidth";
static const char __pyx_k_xedges[] = "xedges";
static const char __pyx_k_xyMean[] = "xyMean";
static const char __pyx_k_yEdges[] = "yEdges";
static const char __pyx_k_yFocus[] = "yFocus";
static const char __pyx_k_yMeans[] = "yMeans";
static const char __pyx_k_yWidth[] = "yWidth";
static const char __pyx_k_yedges[] = "yedges";
static const char __pyx_k_zMeans[] = "zMeans";
static const char __pyx_k_Bin_dim[] = "Bin.dim";
static const char __pyx_k_Counter[] = "Counter";
static const char __pyx_k_Histo1D[] = "Histo1D";
static const char __pyx_k_Histo2D[] = "Histo2D";
static const char __pyx_k_Point1D[] = "Point1D";
static const char __pyx_k_Point2D[] = "Point2D";
static const char __pyx_k_Point3D[] = "Point3D";
static const char __pyx_k_addBins[] = "addBins";
static const char __pyx_k_areaErr[] = "areaErr";
static const char __pyx_k_autostr[] = "_autostr";
static const char __pyx_k_binErrs[] = "binErrs";
static const char __pyx_k_compile[] = "compile";
static const char __pyx_k_counter[] = "counter";
static const char __pyx_k_default[] = "default";
static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_errPlus[] = "errPlus";
static const char __pyx_k_err_map[] = "err_map";
static const char __pyx_k_fillBin[] = "fillBin";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_heights[] = "heights";
static const char __pyx_k_nsample[] = "nsample";
static const char __pyx_k_numBins[] = "numBins";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_rebinBy[] = "rebinBy";
static const char __pyx_k_rebinTo[] = "rebinTo";
static const char __pyx_k_relErrW[] = "relErrW";
static const char __pyx_k_relErrs[] = "relErrs";
static const char __pyx_k_replace[] = "replace";
static const char __pyx_k_reshape[] = "reshape";
static const char __pyx_k_rmPoint[] = "rmPoint";
static const char __pyx_k_s_x_g_g[] = "<%s x=[%g, %g)>";
static const char __pyx_k_sample1[] = "sample1";
static const char __pyx_k_sample2[] = "sample2";
static const char __pyx_k_scaleXY[] = "scaleXY";
static const char __pyx_k_setErrs[] = "setErrs";
static const char __pyx_k_setPath[] = "setPath";
static const char __pyx_k_sigma_i[] = "sigma_i";
static const char __pyx_k_sigma_j[] = "sigma_j";
static const char __pyx_k_version[] = "version";
static const char __pyx_k_volErrs[] = "volErrs";
static const char __pyx_k_volumes[] = "volumes";
static const char __pyx_k_xErrAvg[] = "xErrAvg";
static const char __pyx_k_xStdDev[] = "xStdDev";
static const char __pyx_k_xStdErr[] = "xStdErr";
static const char __pyx_k_xWidths[] = "xWidths";
static const char __pyx_k_xcuts_2[] = "_xcuts";
static const char __pyx_k_xyEdges[] = "xyEdges";
static const char __pyx_k_xyFocus[] = "xyFocus";
static const char __pyx_k_yErrAvg[] = "yErrAvg";
static const char __pyx_k_yStdDev[] = "yStdDev";
static const char __pyx_k_yStdErr[] = "yStdErr";
static const char __pyx_k_yWidths[] = "yWidths";
static const char __pyx_k_ycuts_2[] = "_ycuts";
static const char __pyx_k_zErrAvg[] = "zErrAvg";
static const char __pyx_k_zStdDev[] = "zStdDev";
static const char __pyx_k_zStdErr[] = "zStdErr";
static const char __pyx_k_Bin_sumW[] = "Bin.sumW";
static const char __pyx_k_StringIO[] = "StringIO";
static const char __pyx_k_addPoint[] = "addPoint";
static const char __pyx_k_ana_objs[] = "ana_objs";
static const char __pyx_k_aobjects[] = "aobjects";
static const char __pyx_k_areaErrs[] = "areaErrs";
static const char __pyx_k_binTotal[] = "binTotal";
static const char __pyx_k_binedges[] = "binedges";
static const char __pyx_k_c_double[] = "c_double";
static const char __pyx_k_callback[] = "callback";
static const char __pyx_k_core_pyx[] = "core.pyx";
static const char __pyx_k_divideBy[] = "divideBy";
static const char __pyx_k_errMinus[] = "errMinus";
static const char __pyx_k_filename[] = "filename";
static const char __pyx_k_fraction[] = "fraction";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_integral[] = "integral";
static const char __pyx_k_iterable[] = "iterable";
static const char __pyx_k_linspace[] = "linspace";
static const char __pyx_k_logspace[] = "logspace";
static const char __pyx_k_numBinsX[] = "numBinsX";
static const char __pyx_k_numBinsY[] = "numBinsY";
static const char __pyx_k_operator[] = "operator";
static const char __pyx_k_overflow[] = "overflow";
static const char __pyx_k_patterns[] = "patterns";
static const char __pyx_k_pdfspace[] = "pdfspace";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_readAIDA[] = "readAIDA";
static const char __pyx_k_readFLAT[] = "readFLAT";
static const char __pyx_k_readYODA[] = "readYODA";
static const char __pyx_k_rmPoints[] = "rmPoints";
static const char __pyx_k_scaleXYZ[] = "scaleXYZ";
static const char __pyx_k_setTitle[] = "setTitle";
static const char __pyx_k_setXErrs[] = "setXErrs";
static const char __pyx_k_setYErrs[] = "setYErrs";
static const char __pyx_k_setZErrs[] = "setZErrs";
static const char __pyx_k_set_name[] = "__set_name__";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_totalDbn[] = "totalDbn";
static const char __pyx_k_try_loop[] = "try_loop";
static const char __pyx_k_usefocus[] = "usefocus";
static const char __pyx_k_variance[] = "variance";
static const char __pyx_k_xErrAvgs[] = "xErrAvgs";
static const char __pyx_k_xyStdDev[] = "xyStdDev";
static const char __pyx_k_xyStdErr[] = "xyStdErr";
static const char __pyx_k_xyWidths[] = "xyWidths";
static const char __pyx_k_yErrAvgs[] = "yErrAvgs";
static const char __pyx_k_yStdDevs[] = "yStdDevs";
static const char __pyx_k_yStdErrs[] = "yStdErrs";
static const char __pyx_k_zStdDevs[] = "zStdDevs";
static const char __pyx_k_zStdErrs[] = "zStdErrs";
static const char __pyx_k_Bin_sumW2[] = "Bin.sumW2";
static const char __pyx_k_CFUNCTYPE[] = "CFUNCTYPE";
static const char __pyx_k_Dbn2D_rms[] = "Dbn2D.rms";
static const char __pyx_k_Dbn3D_rms[] = "Dbn3D.rms";
static const char __pyx_k_Point1D_x[] = "Point1D.x";
static const char __pyx_k_Point2D_x[] = "Point2D.x";
static const char __pyx_k_Point2D_y[] = "Point2D.y";
static const char __pyx_k_Point3D_x[] = "Point3D.x";
static const char __pyx_k_Point3D_y[] = "Point3D.y";
static const char __pyx_k_Point3D_z[] = "Point3D.z";
static const char __pyx_k_Point_dim[] = "Point.dim";
static const char __pyx_k_Point_set[] = "Point.set";
static const char __pyx_k_Point_val[] = "Point.val";
static const char __pyx_k_Profile1D[] = "Profile1D";
static const char __pyx_k_Profile2D[] = "Profile2D";
static const char __pyx_k_Scatter1D[] = "Scatter1D";
static const char __pyx_k_Scatter2D[] = "Scatter2D";
static const char __pyx_k_Scatter3D[] = "Scatter3D";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_addPoints[] = "addPoints";
static const char __pyx_k_addressof[] = "addressof";
static const char __pyx_k_cStringIO[] = "cStringIO";
static const char __pyx_k_covMatrix[] = "covMatrix";
static const char __pyx_k_heightErr[] = "heightErr";
static const char __pyx_k_index_map[] = "index_map";
static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_iteritems[] = "iteritems";
static const char __pyx_k_itertools[] = "itertools";
static const char __pyx_k_mergeBins[] = "mergeBins";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_mkScatter[] = "mkScatter";
static const char __pyx_k_normalize[] = "normalize";
static const char __pyx_k_numPoints[] = "numPoints";
static const char __pyx_k_parseyaml[] = "_parseyaml";
static const char __pyx_k_precision[] = "precision";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_underflow[] = "underflow";
static const char __pyx_k_usestddev[] = "usestddev";
static const char __pyx_k_volumeErr[] = "volumeErr";
static const char __pyx_k_writeAIDA[] = "writeAIDA";
static const char __pyx_k_writeFLAT[] = "writeFLAT";
static const char __pyx_k_writeYODA[] = "writeYODA";
static const char __pyx_k_xVariance[] = "xVariance";
static const char __pyx_k_yVariance[] = "yVariance";
static const char __pyx_k_yoda_core[] = "yoda.core";
static const char __pyx_k_yoda_util[] = "yoda.util";
static const char __pyx_k_Dbn0D_copy[] = "Dbn0D.copy";
static const char __pyx_k_Dbn0D_errW[] = "Dbn0D.errW";
static const char __pyx_k_Dbn0D_fill[] = "Dbn0D.fill";
static const char __pyx_k_Dbn0D_sumW[] = "Dbn0D.sumW";
static const char __pyx_k_Dbn1D_copy[] = "Dbn1D.copy";
static const char __pyx_k_Dbn1D_errW[] = "Dbn1D.errW";
static const char __pyx_k_Dbn1D_fill[] = "Dbn1D.fill";
static const char __pyx_k_Dbn1D_sumW[] = "Dbn1D.sumW";
static const char __pyx_k_Dbn1D_xRMS[] = "Dbn1D.xRMS";
static const char __pyx_k_Dbn2D_copy[] = "Dbn2D.copy";
static const char __pyx_k_Dbn2D_errW[] = "Dbn2D.errW";
static const char __pyx_k_Dbn2D_fill[] = "Dbn2D.fill";
static const char __pyx_k_Dbn2D_mean[] = "Dbn2D.mean";
static const char __pyx_k_Dbn2D_sumW[] = "Dbn2D.sumW";
static const char __pyx_k_Dbn3D_copy[] = "Dbn3D.copy";
static const char __pyx_k_Dbn3D_errW[] = "Dbn3D.errW";
static const char __pyx_k_Dbn3D_fill[] = "Dbn3D.fill";
static const char __pyx_k_Dbn3D_mean[] = "Dbn3D.mean";
static const char __pyx_k_Dbn3D_sumW[] = "Dbn3D.sumW";
static const char __pyx_k_HistoBin1D[] = "HistoBin1D";
static const char __pyx_k_HistoBin2D[] = "HistoBin2D";
static const char __pyx_k_IndexError[] = "IndexError";
static const char __pyx_k_Point_errs[] = "Point.errs";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_adjacentTo[] = "adjacentTo";
static const char __pyx_k_annotation[] = "annotation";
static const char __pyx_k_attrgetter[] = "attrgetter";
static const char __pyx_k_binIndexAt[] = "binIndexAt";
static const char __pyx_k_binareadiv[] = "binareadiv";
static const char __pyx_k_covariance[] = "covariance";
static const char __pyx_k_efficiency[] = "efficiency";
static const char __pyx_k_getLibPath[] = "getLibPath";
static const char __pyx_k_heightErrs[] = "heightErrs";
static const char __pyx_k_integralTo[] = "integralTo";
static const char __pyx_k_mktxtifstr[] = "_mktxtifstr";
static const char __pyx_k_numEntries[] = "numEntries";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_setErrPlus[] = "setErrPlus";
static const char __pyx_k_toIntegral[] = "toIntegral";
static const char __pyx_k_transformX[] = "transformX";
static const char __pyx_k_transformY[] = "transformY";
static const char __pyx_k_transformZ[] = "transformZ";
static const char __pyx_k_unpatterns[] = "unpatterns";
static const char __pyx_k_variations[] = "variations";
static const char __pyx_k_volumeErrs[] = "volumeErrs";
static const char __pyx_k_xyVariance[] = "xyVariance";
static const char __pyx_k_Bin1D_Dbn1D[] = "Bin1D_Dbn1D";
static const char __pyx_k_Bin1D_Dbn2D[] = "Bin1D_Dbn2D";
static const char __pyx_k_Bin2D_Dbn2D[] = "Bin2D_Dbn2D";
static const char __pyx_k_Bin2D_Dbn3D[] = "Bin2D_Dbn3D";
static const char __pyx_k_Counter_err[] = "Counter.err";
static const char __pyx_k_Counter_val[] = "Counter.val";
static const char __pyx_k_Dbn0D_reset[] = "Dbn0D.reset";
static const char __pyx_k_Dbn0D_sumW2[] = "Dbn0D.sumW2";
static const char __pyx_k_Dbn1D_reset[] = "Dbn1D.reset";
static const char __pyx_k_Dbn1D_sumW2[] = "Dbn1D.sumW2";
static const char __pyx_k_Dbn1D_sumWX[] = "Dbn1D.sumWX";
static const char __pyx_k_Dbn1D_xMean[] = "Dbn1D.xMean";
static const char __pyx_k_Dbn2D_reset[] = "Dbn2D.reset";
static const char __pyx_k_Dbn2D_sumW2[] = "Dbn2D.sumW2";
static const char __pyx_k_Dbn2D_sumWX[] = "Dbn2D.sumWX";
static const char __pyx_k_Dbn2D_sumWY[] = "Dbn2D.sumWY";
static const char __pyx_k_Dbn3D_reset[] = "Dbn3D.reset";
static const char __pyx_k_Dbn3D_sumW2[] = "Dbn3D.sumW2";
static const char __pyx_k_Dbn3D_sumWX[] = "Dbn3D.sumWX";
static const char __pyx_k_Dbn3D_sumWY[] = "Dbn3D.sumWY";
static const char __pyx_k_Dbn3D_sumWZ[] = "Dbn3D.sumWZ";
static const char __pyx_k_Histo1D_bin[] = "Histo1D.bin";
static const char __pyx_k_Histo2D_bin[] = "Histo2D.bin";
static const char __pyx_k_ImportError[] = "ImportError";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_OrderedDict[] = "OrderedDict";
static const char __pyx_k_Point1D_x_g[] = "<Point1D(x=%g)>";
static const char __pyx_k_Point_scale[] = "Point.scale";
static const char __pyx_k_annotations[] = "annotations";
static const char __pyx_k_binwidthdiv[] = "binwidthdiv";
static const char __pyx_k_collections[] = "collections";
static const char __pyx_k_combineWith[] = "combineWith";
static const char __pyx_k_correlation[] = "correlation";
static const char __pyx_k_getDataPath[] = "getDataPath";
static const char __pyx_k_mkIndexYODA[] = "mkIndexYODA";
static const char __pyx_k_p_usestddev[] = "p_usestddev";
static const char __pyx_k_repr_string[] = "repr_string";
static const char __pyx_k_setErrMinus[] = "setErrMinus";
static const char __pyx_k_str_to_file[] = "_str_to_file";
static const char __pyx_k_Counter_fill[] = "Counter.fill";
static const char __pyx_k_Counter_sumW[] = "Counter.sumW";
static const char __pyx_k_Dbn0D_scaleW[] = "Dbn0D.scaleW";
static const char __pyx_k_Dbn1D_scaleW[] = "Dbn1D.scaleW";
static const char __pyx_k_Dbn1D_scaleX[] = "Dbn1D.scaleX";
static const char __pyx_k_Dbn1D_sumWX2[] = "Dbn1D.sumWX2";
static const char __pyx_k_Dbn2D_scaleW[] = "Dbn2D.scaleW";
static const char __pyx_k_Dbn2D_scaleX[] = "Dbn2D.scaleX";
static const char __pyx_k_Dbn2D_scaleY[] = "Dbn2D.scaleY";
static const char __pyx_k_Dbn2D_stdDev[] = "Dbn2D.stdDev";
static const char __pyx_k_Dbn2D_stdErr[] = "Dbn2D.stdErr";
static const char __pyx_k_Dbn2D_sumWX2[] = "Dbn2D.sumWX2";
static const char __pyx_k_Dbn2D_sumWXY[] = "Dbn2D.sumWXY";
static const char __pyx_k_Dbn2D_sumWY2[] = "Dbn2D.sumWY2";
static const char __pyx_k_Dbn3D_scaleW[] = "Dbn3D.scaleW";
static const char __pyx_k_Dbn3D_scaleX[] = "Dbn3D.scaleX";
static const char __pyx_k_Dbn3D_scaleY[] = "Dbn3D.scaleY";
static const char __pyx_k_Dbn3D_scaleZ[] = "Dbn3D.scaleZ";
static const char __pyx_k_Dbn3D_stdDev[] = "Dbn3D.stdDev";
static const char __pyx_k_Dbn3D_stdErr[] = "Dbn3D.stdErr";
static const char __pyx_k_Dbn3D_sumWX2[] = "Dbn3D.sumWX2";
static const char __pyx_k_Dbn3D_sumWXY[] = "Dbn3D.sumWXY";
static const char __pyx_k_Dbn3D_sumWXZ[] = "Dbn3D.sumWXZ";
static const char __pyx_k_Dbn3D_sumWY2[] = "Dbn3D.sumWY2";
static const char __pyx_k_Dbn3D_sumWYZ[] = "Dbn3D.sumWYZ";
static const char __pyx_k_Dbn3D_sumWZ2[] = "Dbn3D.sumWZ2";
static const char __pyx_k_Histo1D_bins[] = "Histo1D.bins";
static const char __pyx_k_Histo1D_fill[] = "Histo1D.fill";
static const char __pyx_k_Histo1D_sumW[] = "Histo1D.sumW";
static const char __pyx_k_Histo1D_xMax[] = "Histo1D.xMax";
static const char __pyx_k_Histo1D_xMin[] = "Histo1D.xMin";
static const char __pyx_k_Histo1D_xRMS[] = "Histo1D.xRMS";
static const char __pyx_k_Histo1D_yMax[] = "Histo1D.yMax";
static const char __pyx_k_Histo1D_yMin[] = "Histo1D.yMin";
static const char __pyx_k_Histo2D_bins[] = "Histo2D.bins";
static const char __pyx_k_Histo2D_fill[] = "Histo2D.fill";
static const char __pyx_k_Histo2D_sumW[] = "Histo2D.sumW";
static const char __pyx_k_Histo2D_xMax[] = "Histo2D.xMax";
static const char __pyx_k_Histo2D_xMin[] = "Histo2D.xMin";
static const char __pyx_k_Histo2D_xRMS[] = "Histo2D.xRMS";
static const char __pyx_k_Histo2D_yMax[] = "Histo2D.yMax";
static const char __pyx_k_Histo2D_yMin[] = "Histo2D.yMin";
static const char __pyx_k_Histo2D_yRMS[] = "Histo2D.yRMS";
static const char __pyx_k_Histo2D_zMax[] = "Histo2D.zMax";
static const char __pyx_k_Histo2D_zMin[] = "Histo2D.zMin";
static const char __pyx_k_Index___init[] = "Index.__init__";
static const char __pyx_k_Index___repr[] = "Index.__repr__";
static const char __pyx_k_Index_toDict[] = "Index.toDict";
static const char __pyx_k_Point1D_copy[] = "Point1D.copy";
static const char __pyx_k_Point1D_setX[] = "Point1D.setX";
static const char __pyx_k_Point1D_xMax[] = "Point1D.xMax";
static const char __pyx_k_Point1D_xMin[] = "Point1D.xMin";
static const char __pyx_k_Point2D_copy[] = "Point2D.copy";
static const char __pyx_k_Point2D_setX[] = "Point2D.setX";
static const char __pyx_k_Point2D_setY[] = "Point2D.setY";
static const char __pyx_k_Point2D_xMax[] = "Point2D.xMax";
static const char __pyx_k_Point2D_xMin[] = "Point2D.xMin";
static const char __pyx_k_Point2D_yMax[] = "Point2D.yMax";
static const char __pyx_k_Point2D_yMin[] = "Point2D.yMin";
static const char __pyx_k_Point3D_copy[] = "Point3D.copy";
static const char __pyx_k_Point3D_setX[] = "Point3D.setX";
static const char __pyx_k_Point3D_setY[] = "Point3D.setY";
static const char __pyx_k_Point3D_setZ[] = "Point3D.setZ";
static const char __pyx_k_Point3D_xMax[] = "Point3D.xMax";
static const char __pyx_k_Point3D_xMin[] = "Point3D.xMin";
static const char __pyx_k_Point3D_yMax[] = "Point3D.yMax";
static const char __pyx_k_Point3D_yMin[] = "Point3D.yMin";
static const char __pyx_k_Point3D_zMax[] = "Point3D.zMax";
static const char __pyx_k_Point3D_zMin[] = "Point3D.zMin";
static const char __pyx_k_Point_errAvg[] = "Point.errAvg";
static const char __pyx_k_Point_errMap[] = "Point.errMap";
static const char __pyx_k_Point_setErr[] = "Point.setErr";
static const char __pyx_k_Point_setVal[] = "Point.setVal";
static const char __pyx_k_ProfileBin1D[] = "ProfileBin1D";
static const char __pyx_k_ProfileBin2D[] = "ProfileBin2D";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_addBins_bins[] = "__addBins_bins";
static const char __pyx_k_h_binsizediv[] = "h_binsizediv";
static const char __pyx_k_initializing[] = "_initializing";
static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_rmAnnotation[] = "rmAnnotation";
static const char __pyx_k_rmVariations[] = "rmVariations";
static const char __pyx_k_s_s_d_points[] = "<%s '%s' %d points>";
static const char __pyx_k_stringsource[] = "<stringsource>";
static const char __pyx_k_version_info[] = "version_info";
static const char __pyx_k_Counter_clone[] = "Counter.clone";
static const char __pyx_k_Counter_reset[] = "Counter.reset";
static const char __pyx_k_Counter_sumW2[] = "Counter.sumW2";
static const char __pyx_k_Dbn0D_relErrW[] = "Dbn0D.relErrW";
static const char __pyx_k_Dbn1D_relErrW[] = "Dbn1D.relErrW";
static const char __pyx_k_Dbn1D_xStdDev[] = "Dbn1D.xStdDev";
static const char __pyx_k_Dbn1D_xStdErr[] = "Dbn1D.xStdErr";
static const char __pyx_k_Dbn2D_relErrW[] = "Dbn2D.relErrW";
static const char __pyx_k_Dbn2D_scaleXY[] = "Dbn2D.scaleXY";
static const char __pyx_k_Dbn3D_relErrW[] = "Dbn3D.relErrW";
static const char __pyx_k_Histo1D__mknp[] = "Histo1D._mknp";
static const char __pyx_k_Histo1D_areas[] = "Histo1D.areas";
static const char __pyx_k_Histo1D_binAt[] = "Histo1D.binAt";
static const char __pyx_k_Histo1D_clone[] = "Histo1D.clone";
static const char __pyx_k_Histo1D_rebin[] = "Histo1D.rebin";
static const char __pyx_k_Histo1D_reset[] = "Histo1D.reset";
static const char __pyx_k_Histo1D_sumW2[] = "Histo1D.sumW2";
static const char __pyx_k_Histo1D_sumWs[] = "Histo1D.sumWs";
static const char __pyx_k_Histo1D_xErrs[] = "Histo1D.xErrs";
static const char __pyx_k_Histo1D_xFoci[] = "Histo1D.xFoci";
static const char __pyx_k_Histo1D_xMaxs[] = "Histo1D.xMaxs";
static const char __pyx_k_Histo1D_xMean[] = "Histo1D.xMean";
static const char __pyx_k_Histo1D_xMids[] = "Histo1D.xMids";
static const char __pyx_k_Histo1D_xMins[] = "Histo1D.xMins";
static const char __pyx_k_Histo1D_xVals[] = "Histo1D.xVals";
static const char __pyx_k_Histo1D_yErrs[] = "Histo1D.yErrs";
static const char __pyx_k_Histo1D_yMaxs[] = "Histo1D.yMaxs";
static const char __pyx_k_Histo1D_yMins[] = "Histo1D.yMins";
static const char __pyx_k_Histo1D_yVals[] = "Histo1D.yVals";
static const char __pyx_k_Histo2D__mknp[] = "Histo2D._mknp";
static const char __pyx_k_Histo2D_binAt[] = "Histo2D.binAt";
static const char __pyx_k_Histo2D_clone[] = "Histo2D.clone";
static const char __pyx_k_Histo2D_reset[] = "Histo2D.reset";
static const char __pyx_k_Histo2D_sumW2[] = "Histo2D.sumW2";
static const char __pyx_k_Histo2D_sumWs[] = "Histo2D.sumWs";
static const char __pyx_k_Histo2D_xErrs[] = "Histo2D.xErrs";
static const char __pyx_k_Histo2D_xFoci[] = "Histo2D.xFoci";
static const char __pyx_k_Histo2D_xMaxs[] = "Histo2D.xMaxs";
static const char __pyx_k_Histo2D_xMean[] = "Histo2D.xMean";
static const char __pyx_k_Histo2D_xMids[] = "Histo2D.xMids";
static const char __pyx_k_Histo2D_xMins[] = "Histo2D.xMins";
static const char __pyx_k_Histo2D_xVals[] = "Histo2D.xVals";
static const char __pyx_k_Histo2D_xyRMS[] = "Histo2D.xyRMS";
static const char __pyx_k_Histo2D_yErrs[] = "Histo2D.yErrs";
static const char __pyx_k_Histo2D_yFoci[] = "Histo2D.yFoci";
static const char __pyx_k_Histo2D_yMaxs[] = "Histo2D.yMaxs";
static const char __pyx_k_Histo2D_yMean[] = "Histo2D.yMean";
static const char __pyx_k_Histo2D_yMids[] = "Histo2D.yMids";
static const char __pyx_k_Histo2D_yMins[] = "Histo2D.yMins";
static const char __pyx_k_Histo2D_yVals[] = "Histo2D.yVals";
static const char __pyx_k_Histo2D_zErrs[] = "Histo2D.zErrs";
static const char __pyx_k_Histo2D_zMaxs[] = "Histo2D.zMaxs";
static const char __pyx_k_Histo2D_zMins[] = "Histo2D.zMins";
static const char __pyx_k_Histo2D_zVals[] = "Histo2D.zVals";
static const char __pyx_k_Point1D_xErrs[] = "Point1D.xErrs";
static const char __pyx_k_Point2D_scale[] = "Point2D.scale";
static const char __pyx_k_Point2D_xErrs[] = "Point2D.xErrs";
static const char __pyx_k_Point2D_yErrs[] = "Point2D.yErrs";
static const char __pyx_k_Point3D_xErrs[] = "Point3D.xErrs";
static const char __pyx_k_Point3D_yErrs[] = "Point3D.yErrs";
static const char __pyx_k_Point3D_zErrs[] = "Point3D.zErrs";
static const char __pyx_k_Point_errPlus[] = "Point.errPlus";
static const char __pyx_k_Point_setErrs[] = "Point.setErrs";
static const char __pyx_k_Profile1D_bin[] = "Profile1D.bin";
static const char __pyx_k_Profile2D_bin[] = "Profile2D.bin";
static const char __pyx_k_addBins_edges[] = "__addBins_edges";
static const char __pyx_k_bins_or_edges[] = "bins_or_edges";
static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_edges_or_bins[] = "edges_or_bins";
static const char __pyx_k_effNumEntries[] = "effNumEntries";
static const char __pyx_k_hasAnnotation[] = "hasAnnotation";
static const char __pyx_k_index_between[] = "index_between";
static const char __pyx_k_init_subclass[] = "__init_subclass__";
static const char __pyx_k_integralRange[] = "integralRange";
static const char __pyx_k_pattern_check[] = "_pattern_check";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_s_x_g_g_y_g_g[] = "<%s x=[%g, %g), y=[%g, %g)>";
static const char __pyx_k_setAnnotation[] = "setAnnotation";
static const char __pyx_k_AnalysisObject[] = "AnalysisObject";
static const char __pyx_k_AssertionError[] = "AssertionError";
static const char __pyx_k_Bin_numEntries[] = "Bin.numEntries";
static const char __pyx_k_Counter_relErr[] = "Counter.relErr";
static const char __pyx_k_Counter_scaleW[] = "Counter.scaleW";
static const char __pyx_k_Dbn2D_variance[] = "Dbn2D.variance";
static const char __pyx_k_Dbn3D_scaleXYZ[] = "Dbn3D.scaleXYZ";
static const char __pyx_k_Dbn3D_variance[] = "Dbn3D.variance";
static const char __pyx_k_Histo1D__init2[] = "_Histo1D__init2";
static const char __pyx_k_Histo1D__init3[] = "_Histo1D__init3";
static const char __pyx_k_Histo1D__init5[] = "_Histo1D__init5";
static const char __pyx_k_Histo1D_addBin[] = "Histo1D.addBin";
static const char __pyx_k_Histo1D_scaleW[] = "Histo1D.scaleW";
static const char __pyx_k_Histo1D_xEdges[] = "Histo1D.xEdges";
static const char __pyx_k_Histo2D__init2[] = "_Histo2D__init2";
static const char __pyx_k_Histo2D__init4[] = "_Histo2D__init4";
static const char __pyx_k_Histo2D__init8[] = "_Histo2D__init8";
static const char __pyx_k_Histo2D_addBin[] = "Histo2D.addBin";
static const char __pyx_k_Histo2D_scaleW[] = "Histo2D.scaleW";
static const char __pyx_k_Histo2D_xEdges[] = "Histo2D.xEdges";
static const char __pyx_k_Histo2D_xyMean[] = "Histo2D.xyMean";
static const char __pyx_k_Histo2D_yEdges[] = "Histo2D.yEdges";
static const char __pyx_k_Point1D_scaleX[] = "Point1D.scaleX";
static const char __pyx_k_Point2D_scaleX[] = "Point2D.scaleX";
static const char __pyx_k_Point2D_scaleY[] = "Point2D.scaleY";
static const char __pyx_k_Point3D_scaleX[] = "Point3D.scaleX";
static const char __pyx_k_Point3D_scaleY[] = "Point3D.scaleY";
static const char __pyx_k_Point3D_scaleZ[] = "Point3D.scaleZ";
static const char __pyx_k_Point_errMinus[] = "Point.errMinus";
static const char __pyx_k_Profile1D_bins[] = "Profile1D.bins";
static const char __pyx_k_Profile1D_fill[] = "Profile1D.fill";
static const char __pyx_k_Profile1D_sumW[] = "Profile1D.sumW";
static const char __pyx_k_Profile1D_xMax[] = "Profile1D.xMax";
static const char __pyx_k_Profile1D_xMin[] = "Profile1D.xMin";
static const char __pyx_k_Profile1D_xRMS[] = "Profile1D.xRMS";
static const char __pyx_k_Profile1D_yMax[] = "Profile1D.yMax";
static const char __pyx_k_Profile1D_yMin[] = "Profile1D.yMin";
static const char __pyx_k_Profile2D_bins[] = "Profile2D.bins";
static const char __pyx_k_Profile2D_fill[] = "Profile2D.fill";
static const char __pyx_k_Profile2D_sumW[] = "Profile2D.sumW";
static const char __pyx_k_Profile2D_xMax[] = "Profile2D.xMax";
static const char __pyx_k_Profile2D_xMin[] = "Profile2D.xMin";
static const char __pyx_k_Profile2D_xRMS[] = "Profile2D.xRMS";
static const char __pyx_k_Profile2D_yMax[] = "Profile2D.yMax";
static const char __pyx_k_Profile2D_yMin[] = "Profile2D.yMin";
static const char __pyx_k_Profile2D_yRMS[] = "Profile2D.yRMS";
static const char __pyx_k_Profile2D_zMax[] = "Profile2D.zMax";
static const char __pyx_k_Profile2D_zMin[] = "Profile2D.zMin";
static const char __pyx_k_Scatter1D_xMax[] = "Scatter1D.xMax";
static const char __pyx_k_Scatter1D_xMin[] = "Scatter1D.xMin";
static const char __pyx_k_Scatter2D_xMax[] = "Scatter2D.xMax";
static const char __pyx_k_Scatter2D_xMin[] = "Scatter2D.xMin";
static const char __pyx_k_Scatter2D_yMax[] = "Scatter2D.yMax";
static const char __pyx_k_Scatter2D_yMin[] = "Scatter2D.yMin";
static const char __pyx_k_Scatter3D_xMax[] = "Scatter3D.xMax";
static const char __pyx_k_Scatter3D_xMin[] = "Scatter3D.xMin";
static const char __pyx_k_Scatter3D_yMax[] = "Scatter3D.yMax";
static const char __pyx_k_Scatter3D_yMin[] = "Scatter3D.yMin";
static const char __pyx_k_Scatter3D_zMax[] = "Scatter3D.zMax";
static const char __pyx_k_Scatter3D_zMin[] = "Scatter3D.zMin";
static const char __pyx_k_addBins_points[] = "__addBins_points";
static const char __pyx_k_addBins_tuples[] = "__addBins_tuples";
static const char __pyx_k_addPoint_point[] = "__addPoint_point";
static const char __pyx_k_include_IO_pyx[] = "include/IO.pyx";
static const char __pyx_k_oflow_binwidth[] = "oflow_binwidth";
static const char __pyx_k_read_symmetric[] = "read_symmetric";
static const char __pyx_k_uflow_binwidth[] = "uflow_binwidth";
static const char __pyx_k_Dbn1D_xVariance[] = "Dbn1D.xVariance";
static const char __pyx_k_Histo1D___init2[] = "Histo1D.__init2";
static const char __pyx_k_Histo1D___init3[] = "Histo1D.__init3";
static const char __pyx_k_Histo1D___init5[] = "Histo1D.__init5";
static const char __pyx_k_Histo1D_addBins[] = "Histo1D.addBins";
static const char __pyx_k_Histo1D_fillBin[] = "Histo1D.fillBin";
static const char __pyx_k_Histo1D_heights[] = "Histo1D.heights";
static const char __pyx_k_Histo1D_numBins[] = "Histo1D.numBins";
static const char __pyx_k_Histo1D_rebinBy[] = "Histo1D.rebinBy";
static const char __pyx_k_Histo1D_rebinTo[] = "Histo1D.rebinTo";
static const char __pyx_k_Histo1D_relErrs[] = "Histo1D.relErrs";
static const char __pyx_k_Histo1D_xStdDev[] = "Histo1D.xStdDev";
static const char __pyx_k_Histo1D_xStdErr[] = "Histo1D.xStdErr";
static const char __pyx_k_Histo1D_xWidths[] = "Histo1D.xWidths";
static const char __pyx_k_Histo2D___init2[] = "Histo2D.__init2";
static const char __pyx_k_Histo2D___init4[] = "Histo2D.__init4";
static const char __pyx_k_Histo2D___init8[] = "Histo2D.__init8";
static const char __pyx_k_Histo2D_addBins[] = "Histo2D.addBins";
static const char __pyx_k_Histo2D_fillBin[] = "Histo2D.fillBin";
static const char __pyx_k_Histo2D_heights[] = "Histo2D.heights";
static const char __pyx_k_Histo2D_numBins[] = "Histo2D.numBins";
static const char __pyx_k_Histo2D_relErrs[] = "Histo2D.relErrs";
static const char __pyx_k_Histo2D_volumes[] = "Histo2D.volumes";
static const char __pyx_k_Histo2D_xStdDev[] = "Histo2D.xStdDev";
static const char __pyx_k_Histo2D_xStdErr[] = "Histo2D.xStdErr";
static const char __pyx_k_Histo2D_xWidths[] = "Histo2D.xWidths";
static const char __pyx_k_Histo2D_yStdDev[] = "Histo2D.yStdDev";
static const char __pyx_k_Histo2D_yStdErr[] = "Histo2D.yStdErr";
static const char __pyx_k_Histo2D_yWidths[] = "Histo2D.yWidths";
static const char __pyx_k_HistoBin1D_area[] = "HistoBin1D.area";
static const char __pyx_k_Index_of_a_file[] = "\n    Index of a file.\n    ";
static const char __pyx_k_Point1D_xErrAvg[] = "Point1D.xErrAvg";
static const char __pyx_k_Point2D_scaleXY[] = "Point2D.scaleXY";
static const char __pyx_k_Point2D_xErrAvg[] = "Point2D.xErrAvg";
static const char __pyx_k_Point2D_x_g_y_g[] = "<Point2D(x=%g, y=%g)>";
static const char __pyx_k_Point2D_yErrAvg[] = "Point2D.yErrAvg";
static const char __pyx_k_Point3D_xErrAvg[] = "Point3D.xErrAvg";
static const char __pyx_k_Point3D_yErrAvg[] = "Point3D.yErrAvg";
static const char __pyx_k_Point3D_zErrAvg[] = "Point3D.zErrAvg";
static const char __pyx_k_Profile1D__mknp[] = "Profile1D._mknp";
static const char __pyx_k_Profile1D_binAt[] = "Profile1D.binAt";
static const char __pyx_k_Profile1D_clone[] = "Profile1D.clone";
static const char __pyx_k_Profile1D_rebin[] = "Profile1D.rebin";
static const char __pyx_k_Profile1D_reset[] = "Profile1D.reset";
static const char __pyx_k_Profile1D_sumW2[] = "Profile1D.sumW2";
static const char __pyx_k_Profile1D_sumWs[] = "Profile1D.sumWs";
static const char __pyx_k_Profile1D_xErrs[] = "Profile1D.xErrs";
static const char __pyx_k_Profile1D_xFoci[] = "Profile1D.xFoci";
static const char __pyx_k_Profile1D_xMaxs[] = "Profile1D.xMaxs";
static const char __pyx_k_Profile1D_xMean[] = "Profile1D.xMean";
static const char __pyx_k_Profile1D_xMids[] = "Profile1D.xMids";
static const char __pyx_k_Profile1D_xMins[] = "Profile1D.xMins";
static const char __pyx_k_Profile1D_xVals[] = "Profile1D.xVals";
static const char __pyx_k_Profile1D_yErrs[] = "Profile1D.yErrs";
static const char __pyx_k_Profile1D_yMaxs[] = "Profile1D.yMaxs";
static const char __pyx_k_Profile1D_yMins[] = "Profile1D.yMins";
static const char __pyx_k_Profile1D_yVals[] = "Profile1D.yVals";
static const char __pyx_k_Profile2D__mknp[] = "Profile2D._mknp";
static const char __pyx_k_Profile2D_binAt[] = "Profile2D.binAt";
static const char __pyx_k_Profile2D_clone[] = "Profile2D.clone";
static const char __pyx_k_Profile2D_reset[] = "Profile2D.reset";
static const char __pyx_k_Profile2D_sumW2[] = "Profile2D.sumW2";
static const char __pyx_k_Profile2D_sumWs[] = "Profile2D.sumWs";
static const char __pyx_k_Profile2D_xErrs[] = "Profile2D.xErrs";
static const char __pyx_k_Profile2D_xFoci[] = "Profile2D.xFoci";
static const char __pyx_k_Profile2D_xMaxs[] = "Profile2D.xMaxs";
static const char __pyx_k_Profile2D_xMean[] = "Profile2D.xMean";
static const char __pyx_k_Profile2D_xMids[] = "Profile2D.xMids";
static const char __pyx_k_Profile2D_xMins[] = "Profile2D.xMins";
static const char __pyx_k_Profile2D_xVals[] = "Profile2D.xVals";
static const char __pyx_k_Profile2D_xyRMS[] = "Profile2D.xyRMS";
static const char __pyx_k_Profile2D_yErrs[] = "Profile2D.yErrs";
static const char __pyx_k_Profile2D_yFoci[] = "Profile2D.yFoci";
static const char __pyx_k_Profile2D_yMaxs[] = "Profile2D.yMaxs";
static const char __pyx_k_Profile2D_yMean[] = "Profile2D.yMean";
static const char __pyx_k_Profile2D_yMids[] = "Profile2D.yMids";
static const char __pyx_k_Profile2D_yMins[] = "Profile2D.yMins";
static const char __pyx_k_Profile2D_yVals[] = "Profile2D.yVals";
static const char __pyx_k_Profile2D_zErrs[] = "Profile2D.zErrs";
static const char __pyx_k_Profile2D_zMaxs[] = "Profile2D.zMaxs";
static const char __pyx_k_Profile2D_zMins[] = "Profile2D.zMins";
static const char __pyx_k_Profile2D_zVals[] = "Profile2D.zVals";
static const char __pyx_k_Scatter1D__mknp[] = "Scatter1D._mknp";
static const char __pyx_k_Scatter1D_clone[] = "Scatter1D.clone";
static const char __pyx_k_Scatter1D_point[] = "Scatter1D.point";
static const char __pyx_k_Scatter1D_reset[] = "Scatter1D.reset";
static const char __pyx_k_Scatter1D_scale[] = "Scatter1D.scale";
static const char __pyx_k_Scatter1D_xMaxs[] = "Scatter1D.xMaxs";
static const char __pyx_k_Scatter1D_xMins[] = "Scatter1D.xMins";
static const char __pyx_k_Scatter1D_xVals[] = "Scatter1D.xVals";
static const char __pyx_k_Scatter2D__mknp[] = "Scatter2D._mknp";
static const char __pyx_k_Scatter2D_clone[] = "Scatter2D.clone";
static const char __pyx_k_Scatter2D_point[] = "Scatter2D.point";
static const char __pyx_k_Scatter2D_reset[] = "Scatter2D.reset";
static const char __pyx_k_Scatter2D_scale[] = "Scatter2D.scale";
static const char __pyx_k_Scatter2D_xErrs[] = "Scatter2D.xErrs";
static const char __pyx_k_Scatter2D_xMaxs[] = "Scatter2D.xMaxs";
static const char __pyx_k_Scatter2D_xMins[] = "Scatter2D.xMins";
static const char __pyx_k_Scatter2D_xVals[] = "Scatter2D.xVals";
static const char __pyx_k_Scatter2D_yErrs[] = "Scatter2D.yErrs";
static const char __pyx_k_Scatter2D_yMaxs[] = "Scatter2D.yMaxs";
static const char __pyx_k_Scatter2D_yMins[] = "Scatter2D.yMins";
static const char __pyx_k_Scatter2D_yVals[] = "Scatter2D.yVals";
static const char __pyx_k_Scatter3D__mknp[] = "Scatter3D._mknp";
static const char __pyx_k_Scatter3D_clone[] = "Scatter3D.clone";
static const char __pyx_k_Scatter3D_point[] = "Scatter3D.point";
static const char __pyx_k_Scatter3D_reset[] = "Scatter3D.reset";
static const char __pyx_k_Scatter3D_scale[] = "Scatter3D.scale";
static const char __pyx_k_Scatter3D_xErrs[] = "Scatter3D.xErrs";
static const char __pyx_k_Scatter3D_xMaxs[] = "Scatter3D.xMaxs";
static const char __pyx_k_Scatter3D_xMins[] = "Scatter3D.xMins";
static const char __pyx_k_Scatter3D_xVals[] = "Scatter3D.xVals";
static const char __pyx_k_Scatter3D_yErrs[] = "Scatter3D.yErrs";
static const char __pyx_k_Scatter3D_yMaxs[] = "Scatter3D.yMaxs";
static const char __pyx_k_Scatter3D_yMins[] = "Scatter3D.yMins";
static const char __pyx_k_Scatter3D_yVals[] = "Scatter3D.yVals";
static const char __pyx_k_Scatter3D_zErrs[] = "Scatter3D.zErrs";
static const char __pyx_k_Scatter3D_zMaxs[] = "Scatter3D.zMaxs";
static const char __pyx_k_Scatter3D_zMins[] = "Scatter3D.zMins";
static const char __pyx_k_Scatter3D_zVals[] = "Scatter3D.zVals";
static const char __pyx_k_annotationsDict[] = "annotationsDict";
static const char __pyx_k_getYodaDataPath[] = "getYodaDataPath";
static const char __pyx_k_include_Bin_pyx[] = "include/Bin.pyx";
static const char __pyx_k_includeoverflow[] = "includeoverflow";
static const char __pyx_k_parseVariations[] = "parseVariations";
static const char __pyx_k_read_error_pair[] = "read_error_pair";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_xErrsFromSource[] = "xErrsFromSource";
static const char __pyx_k_yErrsFromSource[] = "yErrsFromSource";
static const char __pyx_k_zErrsFromSource[] = "zErrsFromSource";
static const char __pyx_k_Bin1D_Dbn1D_xMax[] = "Bin1D_Dbn1D.xMax";
static const char __pyx_k_Bin1D_Dbn1D_xMid[] = "Bin1D_Dbn1D.xMid";
static const char __pyx_k_Bin1D_Dbn1D_xMin[] = "Bin1D_Dbn1D.xMin";
static const char __pyx_k_Bin1D_Dbn1D_xRMS[] = "Bin1D_Dbn1D.xRMS";
static const char __pyx_k_Bin1D_Dbn2D_xMax[] = "Bin1D_Dbn2D.xMax";
static const char __pyx_k_Bin1D_Dbn2D_xMid[] = "Bin1D_Dbn2D.xMid";
static const char __pyx_k_Bin1D_Dbn2D_xMin[] = "Bin1D_Dbn2D.xMin";
static const char __pyx_k_Bin1D_Dbn2D_xRMS[] = "Bin1D_Dbn2D.xRMS";
static const char __pyx_k_Bin2D_Dbn2D_area[] = "Bin2D_Dbn2D.area";
static const char __pyx_k_Bin2D_Dbn2D_xMax[] = "Bin2D_Dbn2D.xMax";
static const char __pyx_k_Bin2D_Dbn2D_xMid[] = "Bin2D_Dbn2D.xMid";
static const char __pyx_k_Bin2D_Dbn2D_xMin[] = "Bin2D_Dbn2D.xMin";
static const char __pyx_k_Bin2D_Dbn2D_xRMS[] = "Bin2D_Dbn2D.xRMS";
static const char __pyx_k_Bin2D_Dbn2D_yMax[] = "Bin2D_Dbn2D.yMax";
static const char __pyx_k_Bin2D_Dbn2D_yMid[] = "Bin2D_Dbn2D.yMid";
static const char __pyx_k_Bin2D_Dbn2D_yMin[] = "Bin2D_Dbn2D.yMin";
static const char __pyx_k_Bin2D_Dbn2D_yRMS[] = "Bin2D_Dbn2D.yRMS";
static const char __pyx_k_Bin2D_Dbn3D_area[] = "Bin2D_Dbn3D.area";
static const char __pyx_k_Bin2D_Dbn3D_xMax[] = "Bin2D_Dbn3D.xMax";
static const char __pyx_k_Bin2D_Dbn3D_xMid[] = "Bin2D_Dbn3D.xMid";
static const char __pyx_k_Bin2D_Dbn3D_xMin[] = "Bin2D_Dbn3D.xMin";
static const char __pyx_k_Bin2D_Dbn3D_xRMS[] = "Bin2D_Dbn3D.xRMS";
static const char __pyx_k_Bin2D_Dbn3D_yMax[] = "Bin2D_Dbn3D.yMax";
static const char __pyx_k_Bin2D_Dbn3D_yMid[] = "Bin2D_Dbn3D.yMid";
static const char __pyx_k_Bin2D_Dbn3D_yMin[] = "Bin2D_Dbn3D.yMin";
static const char __pyx_k_Bin2D_Dbn3D_yRMS[] = "Bin2D_Dbn3D.yRMS";
static const char __pyx_k_Counter_divideBy[] = "Counter.divideBy";
static const char __pyx_k_Dbn0D_numEntries[] = "Dbn0D.numEntries";
static const char __pyx_k_Dbn1D_numEntries[] = "Dbn1D.numEntries";
static const char __pyx_k_Dbn2D_numEntries[] = "Dbn2D.numEntries";
static const char __pyx_k_Dbn3D_numEntries[] = "Dbn3D.numEntries";
static const char __pyx_k_Histo1D_areaErrs[] = "Histo1D.areaErrs";
static const char __pyx_k_Histo1D_divideBy[] = "Histo1D.divideBy";
static const char __pyx_k_Histo1D_integral[] = "Histo1D.integral";
static const char __pyx_k_Histo1D_numBinsX[] = "Histo1D.numBinsX";
static const char __pyx_k_Histo1D_overflow[] = "Histo1D.overflow";
static const char __pyx_k_Histo1D_totalDbn[] = "Histo1D.totalDbn";
static const char __pyx_k_Histo2D_divideBy[] = "Histo2D.divideBy";
static const char __pyx_k_Histo2D_integral[] = "Histo2D.integral";
static const char __pyx_k_Histo2D_numBinsX[] = "Histo2D.numBinsX";
static const char __pyx_k_Histo2D_numBinsY[] = "Histo2D.numBinsY";
static const char __pyx_k_Histo2D_totalDbn[] = "Histo2D.totalDbn";
static const char __pyx_k_Histo2D_xyStdDev[] = "Histo2D.xyStdDev";
static const char __pyx_k_Histo2D_xyStdErr[] = "Histo2D.xyStdErr";
static const char __pyx_k_Point1D_setXErrs[] = "Point1D.setXErrs";
static const char __pyx_k_Point1D_setYErrs[] = "Point1D.setYErrs";
static const char __pyx_k_Point2D_setXErrs[] = "Point2D.setXErrs";
static const char __pyx_k_Point2D_setYErrs[] = "Point2D.setYErrs";
static const char __pyx_k_Point3D_scaleXYZ[] = "Point3D.scaleXYZ";
static const char __pyx_k_Point3D_setXErrs[] = "Point3D.setXErrs";
static const char __pyx_k_Point3D_setYErrs[] = "Point3D.setYErrs";
static const char __pyx_k_Point3D_setZErrs[] = "Point3D.setZErrs";
static const char __pyx_k_Point_setErrPlus[] = "Point.setErrPlus";
static const char __pyx_k_Profile1D__init2[] = "_Profile1D__init2";
static const char __pyx_k_Profile1D__init3[] = "_Profile1D__init3";
static const char __pyx_k_Profile1D__init5[] = "_Profile1D__init5";
static const char __pyx_k_Profile1D_addBin[] = "Profile1D.addBin";
static const char __pyx_k_Profile1D_scaleW[] = "Profile1D.scaleW";
static const char __pyx_k_Profile1D_scaleY[] = "Profile1D.scaleY";
static const char __pyx_k_Profile1D_xEdges[] = "Profile1D.xEdges";
static const char __pyx_k_Profile1D_yMeans[] = "Profile1D.yMeans";
static const char __pyx_k_Profile2D__init2[] = "_Profile2D__init2";
static const char __pyx_k_Profile2D__init4[] = "_Profile2D__init4";
static const char __pyx_k_Profile2D__init8[] = "_Profile2D__init8";
static const char __pyx_k_Profile2D_addBin[] = "Profile2D.addBin";
static const char __pyx_k_Profile2D_scaleW[] = "Profile2D.scaleW";
static const char __pyx_k_Profile2D_scaleZ[] = "Profile2D.scaleZ";
static const char __pyx_k_Profile2D_xEdges[] = "Profile2D.xEdges";
static const char __pyx_k_Profile2D_xyMean[] = "Profile2D.xyMean";
static const char __pyx_k_Profile2D_yEdges[] = "Profile2D.yEdges";
static const char __pyx_k_Profile2D_zMeans[] = "Profile2D.zMeans";
static const char __pyx_k_ProfileBin1D_rms[] = "ProfileBin1D.rms";
static const char __pyx_k_ProfileBin2D_rms[] = "ProfileBin2D.rms";
static const char __pyx_k_Scatter1D_points[] = "Scatter1D.points";
static const char __pyx_k_Scatter1D_scaleX[] = "Scatter1D.scaleX";
static const char __pyx_k_Scatter2D_points[] = "Scatter2D.points";
static const char __pyx_k_Scatter2D_scaleX[] = "Scatter2D.scaleX";
static const char __pyx_k_Scatter2D_scaleY[] = "Scatter2D.scaleY";
static const char __pyx_k_Scatter3D_points[] = "Scatter3D.points";
static const char __pyx_k_Scatter3D_scaleX[] = "Scatter3D.scaleX";
static const char __pyx_k_Scatter3D_scaleY[] = "Scatter3D.scaleY";
static const char __pyx_k_Scatter3D_scaleZ[] = "Scatter3D.scaleZ";
static const char __pyx_k_clearAnnotations[] = "clearAnnotations";
static const char __pyx_k_covarianceMatrix[] = "covarianceMatrix";
static const char __pyx_k_file_or_filename[] = "file_or_filename";
static const char __pyx_k_includeoverflows[] = "includeoverflows";
static const char __pyx_k_includeunderflow[] = "includeunderflow";
static const char __pyx_k_Bin1D_Dbn1D_merge[] = "Bin1D_Dbn1D.merge";
static const char __pyx_k_Bin1D_Dbn1D_sumWX[] = "Bin1D_Dbn1D.sumWX";
static const char __pyx_k_Bin1D_Dbn1D_xMean[] = "Bin1D_Dbn1D.xMean";
static const char __pyx_k_Bin1D_Dbn2D_merge[] = "Bin1D_Dbn2D.merge";
static const char __pyx_k_Bin1D_Dbn2D_sumWX[] = "Bin1D_Dbn2D.sumWX";
static const char __pyx_k_Bin1D_Dbn2D_xMean[] = "Bin1D_Dbn2D.xMean";
static const char __pyx_k_Bin2D_Dbn2D_sumWX[] = "Bin2D_Dbn2D.sumWX";
static const char __pyx_k_Bin2D_Dbn2D_sumWY[] = "Bin2D_Dbn2D.sumWY";
static const char __pyx_k_Bin2D_Dbn2D_xMean[] = "Bin2D_Dbn2D.xMean";
static const char __pyx_k_Bin2D_Dbn2D_xyMax[] = "Bin2D_Dbn2D.xyMax";
static const char __pyx_k_Bin2D_Dbn2D_xyMid[] = "Bin2D_Dbn2D.xyMid";
static const char __pyx_k_Bin2D_Dbn2D_xyMin[] = "Bin2D_Dbn2D.xyMin";
static const char __pyx_k_Bin2D_Dbn2D_xyRMS[] = "Bin2D_Dbn2D.xyRMS";
static const char __pyx_k_Bin2D_Dbn2D_yMean[] = "Bin2D_Dbn2D.yMean";
static const char __pyx_k_Bin2D_Dbn3D_sumWX[] = "Bin2D_Dbn3D.sumWX";
static const char __pyx_k_Bin2D_Dbn3D_sumWY[] = "Bin2D_Dbn3D.sumWY";
static const char __pyx_k_Bin2D_Dbn3D_xMean[] = "Bin2D_Dbn3D.xMean";
static const char __pyx_k_Bin2D_Dbn3D_xyMax[] = "Bin2D_Dbn3D.xyMax";
static const char __pyx_k_Bin2D_Dbn3D_xyMid[] = "Bin2D_Dbn3D.xyMid";
static const char __pyx_k_Bin2D_Dbn3D_xyMin[] = "Bin2D_Dbn3D.xyMin";
static const char __pyx_k_Bin2D_Dbn3D_xyRMS[] = "Bin2D_Dbn3D.xyRMS";
static const char __pyx_k_Bin2D_Dbn3D_yMean[] = "Bin2D_Dbn3D.yMean";
static const char __pyx_k_Bin_effNumEntries[] = "Bin.effNumEntries";
static const char __pyx_k_Counter_mkScatter[] = "Counter.mkScatter";
static const char __pyx_k_Dbn0D_val_g_err_g[] = "<Dbn0D(val=%g, err=%g)>";
static const char __pyx_k_Histo1D_mergeBins[] = "Histo1D.mergeBins";
static const char __pyx_k_Histo1D_mkScatter[] = "Histo1D.mkScatter";
static const char __pyx_k_Histo1D_normalize[] = "Histo1D.normalize";
static const char __pyx_k_Histo1D_underflow[] = "Histo1D.underflow";
static const char __pyx_k_Histo1D_xVariance[] = "Histo1D.xVariance";
static const char __pyx_k_Histo2D_mkScatter[] = "Histo2D.mkScatter";
static const char __pyx_k_Histo2D_normalize[] = "Histo2D.normalize";
static const char __pyx_k_Histo2D_xVariance[] = "Histo2D.xVariance";
static const char __pyx_k_Histo2D_yVariance[] = "Histo2D.yVariance";
static const char __pyx_k_HistoBin1D_height[] = "HistoBin1D.height";
static const char __pyx_k_HistoBin1D_relErr[] = "HistoBin1D.relErr";
static const char __pyx_k_HistoBin2D_height[] = "HistoBin2D.height";
static const char __pyx_k_HistoBin2D_relErr[] = "HistoBin2D.relErr";
static const char __pyx_k_HistoBin2D_volume[] = "HistoBin2D.volume";
static const char __pyx_k_Point_setErrMinus[] = "Point.setErrMinus";
static const char __pyx_k_Profile1D___init2[] = "Profile1D.__init2";
static const char __pyx_k_Profile1D___init3[] = "Profile1D.__init3";
static const char __pyx_k_Profile1D___init5[] = "Profile1D.__init5";
static const char __pyx_k_Profile1D_addBins[] = "Profile1D.addBins";
static const char __pyx_k_Profile1D_fillBin[] = "Profile1D.fillBin";
static const char __pyx_k_Profile1D_numBins[] = "Profile1D.numBins";
static const char __pyx_k_Profile1D_rebinBy[] = "Profile1D.rebinBy";
static const char __pyx_k_Profile1D_rebinTo[] = "Profile1D.rebinTo";
static const char __pyx_k_Profile1D_xStdDev[] = "Profile1D.xStdDev";
static const char __pyx_k_Profile1D_xStdErr[] = "Profile1D.xStdErr";
static const char __pyx_k_Profile1D_xWidths[] = "Profile1D.xWidths";
static const char __pyx_k_Profile2D___init2[] = "Profile2D.__init2";
static const char __pyx_k_Profile2D___init4[] = "Profile2D.__init4";
static const char __pyx_k_Profile2D___init8[] = "Profile2D.__init8";
static const char __pyx_k_Profile2D_addBins[] = "Profile2D.addBins";
static const char __pyx_k_Profile2D_fillBin[] = "Profile2D.fillBin";
static const char __pyx_k_Profile2D_numBins[] = "Profile2D.numBins";
static const char __pyx_k_Profile2D_xStdDev[] = "Profile2D.xStdDev";
static const char __pyx_k_Profile2D_xStdErr[] = "Profile2D.xStdErr";
static const char __pyx_k_Profile2D_xWidths[] = "Profile2D.xWidths";
static const char __pyx_k_Profile2D_yStdDev[] = "Profile2D.yStdDev";
static const char __pyx_k_Profile2D_yStdErr[] = "Profile2D.yStdErr";
static const char __pyx_k_Profile2D_yWidths[] = "Profile2D.yWidths";
static const char __pyx_k_ProfileBin1D_mean[] = "ProfileBin1D.mean";
static const char __pyx_k_ProfileBin2D_mean[] = "ProfileBin2D.mean";
static const char __pyx_k_Scatter1D__init_2[] = "_Scatter1D__init_2";
static const char __pyx_k_Scatter1D__init_3[] = "_Scatter1D__init_3";
static const char __pyx_k_Scatter1D_rmPoint[] = "Scatter1D.rmPoint";
static const char __pyx_k_Scatter2D__init_2[] = "_Scatter2D__init_2";
static const char __pyx_k_Scatter2D__init_3[] = "_Scatter2D__init_3";
static const char __pyx_k_Scatter2D_rmPoint[] = "Scatter2D.rmPoint";
static const char __pyx_k_Scatter2D_scaleXY[] = "Scatter2D.scaleXY";
static const char __pyx_k_Scatter3D__init_2[] = "_Scatter3D__init_2";
static const char __pyx_k_Scatter3D__init_3[] = "_Scatter3D__init_3";
static const char __pyx_k_Scatter3D_rmPoint[] = "Scatter3D.rmPoint";
static const char __pyx_k_addPoint_explicit[] = "__addPoint_explicit";
static const char __pyx_k_bytestr_from_file[] = "_bytestr_from_file";
static const char __pyx_k_correlationMatrix[] = "correlationMatrix";
static const char __pyx_k_include_Dbn0D_pyx[] = "include/Dbn0D.pyx";
static const char __pyx_k_include_Dbn1D_pyx[] = "include/Dbn1D.pyx";
static const char __pyx_k_include_Dbn2D_pyx[] = "include/Dbn2D.pyx";
static const char __pyx_k_include_Dbn3D_pyx[] = "include/Dbn3D.pyx";
static const char __pyx_k_include_Point_pyx[] = "include/Point.pyx";
static const char __pyx_k_AnalysisObject_dim[] = "AnalysisObject.dim";
static const char __pyx_k_Bin1D_Dbn1D_sumWX2[] = "Bin1D_Dbn1D.sumWX2";
static const char __pyx_k_Bin1D_Dbn1D_xEdges[] = "Bin1D_Dbn1D.xEdges";
static const char __pyx_k_Bin1D_Dbn1D_xFocus[] = "Bin1D_Dbn1D.xFocus";
static const char __pyx_k_Bin1D_Dbn1D_xWidth[] = "Bin1D_Dbn1D.xWidth";
static const char __pyx_k_Bin1D_Dbn2D_sumWX2[] = "Bin1D_Dbn2D.sumWX2";
static const char __pyx_k_Bin1D_Dbn2D_xEdges[] = "Bin1D_Dbn2D.xEdges";
static const char __pyx_k_Bin1D_Dbn2D_xFocus[] = "Bin1D_Dbn2D.xFocus";
static const char __pyx_k_Bin1D_Dbn2D_xWidth[] = "Bin1D_Dbn2D.xWidth";
static const char __pyx_k_Bin2D_Dbn2D_sumWX2[] = "Bin2D_Dbn2D.sumWX2";
static const char __pyx_k_Bin2D_Dbn2D_sumWXY[] = "Bin2D_Dbn2D.sumWXY";
static const char __pyx_k_Bin2D_Dbn2D_sumWY2[] = "Bin2D_Dbn2D.sumWY2";
static const char __pyx_k_Bin2D_Dbn2D_xEdges[] = "Bin2D_Dbn2D.xEdges";
static const char __pyx_k_Bin2D_Dbn2D_xFocus[] = "Bin2D_Dbn2D.xFocus";
static const char __pyx_k_Bin2D_Dbn2D_xWidth[] = "Bin2D_Dbn2D.xWidth";
static const char __pyx_k_Bin2D_Dbn2D_xyMean[] = "Bin2D_Dbn2D.xyMean";
static const char __pyx_k_Bin2D_Dbn2D_yEdges[] = "Bin2D_Dbn2D.yEdges";
static const char __pyx_k_Bin2D_Dbn2D_yFocus[] = "Bin2D_Dbn2D.yFocus";
static const char __pyx_k_Bin2D_Dbn2D_yWidth[] = "Bin2D_Dbn2D.yWidth";
static const char __pyx_k_Bin2D_Dbn3D_sumWX2[] = "Bin2D_Dbn3D.sumWX2";
static const char __pyx_k_Bin2D_Dbn3D_sumWXY[] = "Bin2D_Dbn3D.sumWXY";
static const char __pyx_k_Bin2D_Dbn3D_sumWY2[] = "Bin2D_Dbn3D.sumWY2";
static const char __pyx_k_Bin2D_Dbn3D_xEdges[] = "Bin2D_Dbn3D.xEdges";
static const char __pyx_k_Bin2D_Dbn3D_xFocus[] = "Bin2D_Dbn3D.xFocus";
static const char __pyx_k_Bin2D_Dbn3D_xWidth[] = "Bin2D_Dbn3D.xWidth";
static const char __pyx_k_Bin2D_Dbn3D_xyMean[] = "Bin2D_Dbn3D.xyMean";
static const char __pyx_k_Bin2D_Dbn3D_yEdges[] = "Bin2D_Dbn3D.yEdges";
static const char __pyx_k_Bin2D_Dbn3D_yFocus[] = "Bin2D_Dbn3D.yFocus";
static const char __pyx_k_Bin2D_Dbn3D_yWidth[] = "Bin2D_Dbn3D.yWidth";
static const char __pyx_k_Counter_numEntries[] = "Counter.numEntries";
static const char __pyx_k_Histo1D_binIndexAt[] = "Histo1D.binIndexAt";
static const char __pyx_k_Histo1D_heightErrs[] = "Histo1D.heightErrs";
static const char __pyx_k_Histo1D_integralTo[] = "Histo1D.integralTo";
static const char __pyx_k_Histo1D_numEntries[] = "Histo1D.numEntries";
static const char __pyx_k_Histo1D_toIntegral[] = "Histo1D.toIntegral";
static const char __pyx_k_Histo2D_binIndexAt[] = "Histo2D.binIndexAt";
static const char __pyx_k_Histo2D_heightErrs[] = "Histo2D.heightErrs";
static const char __pyx_k_Histo2D_numEntries[] = "Histo2D.numEntries";
static const char __pyx_k_Histo2D_volumeErrs[] = "Histo2D.volumeErrs";
static const char __pyx_k_Histo2D_xyVariance[] = "Histo2D.xyVariance";
static const char __pyx_k_HistoBin1D_areaErr[] = "HistoBin1D.areaErr";
static const char __pyx_k_Point_rmVariations[] = "Point.rmVariations";
static const char __pyx_k_Profile1D_divideBy[] = "Profile1D.divideBy";
static const char __pyx_k_Profile1D_numBinsX[] = "Profile1D.numBinsX";
static const char __pyx_k_Profile1D_overflow[] = "Profile1D.overflow";
static const char __pyx_k_Profile1D_totalDbn[] = "Profile1D.totalDbn";
static const char __pyx_k_Profile1D_yStdDevs[] = "Profile1D.yStdDevs";
static const char __pyx_k_Profile1D_yStdErrs[] = "Profile1D.yStdErrs";
static const char __pyx_k_Profile2D_divideBy[] = "Profile2D.divideBy";
static const char __pyx_k_Profile2D_numBinsX[] = "Profile2D.numBinsX";
static const char __pyx_k_Profile2D_numBinsY[] = "Profile2D.numBinsY";
static const char __pyx_k_Profile2D_totalDbn[] = "Profile2D.totalDbn";
static const char __pyx_k_Profile2D_xyStdDev[] = "Profile2D.xyStdDev";
static const char __pyx_k_Profile2D_xyStdErr[] = "Profile2D.xyStdErr";
static const char __pyx_k_Profile2D_zStdDevs[] = "Profile2D.zStdDevs";
static const char __pyx_k_Profile2D_zStdErrs[] = "Profile2D.zStdErrs";
static const char __pyx_k_ProfileBin1D_sumWY[] = "ProfileBin1D.sumWY";
static const char __pyx_k_ProfileBin2D_sumWZ[] = "ProfileBin2D.sumWZ";
static const char __pyx_k_Scatter1D___init_2[] = "Scatter1D.__init_2";
static const char __pyx_k_Scatter1D___init_3[] = "Scatter1D.__init_3";
static const char __pyx_k_Scatter1D_addPoint[] = "Scatter1D.addPoint";
static const char __pyx_k_Scatter1D_rmPoints[] = "Scatter1D.rmPoints";
static const char __pyx_k_Scatter2D___init_2[] = "Scatter2D.__init_2";
static const char __pyx_k_Scatter2D___init_3[] = "Scatter2D.__init_3";
static const char __pyx_k_Scatter2D_addPoint[] = "Scatter2D.addPoint";
static const char __pyx_k_Scatter2D_rmPoints[] = "Scatter2D.rmPoints";
static const char __pyx_k_Scatter2D_xErrAvgs[] = "Scatter2D.xErrAvgs";
static const char __pyx_k_Scatter2D_yErrAvgs[] = "Scatter2D.yErrAvgs";
static const char __pyx_k_Scatter3D___init_2[] = "Scatter3D.__init_2";
static const char __pyx_k_Scatter3D___init_3[] = "Scatter3D.__init_3";
static const char __pyx_k_Scatter3D_addPoint[] = "Scatter3D.addPoint";
static const char __pyx_k_Scatter3D_rmPoints[] = "Scatter3D.rmPoints";
static const char __pyx_k_Scatter3D_scaleXYZ[] = "Scatter3D.scaleXYZ";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_s_s_d_bins_sumw_2g[] = "<%s '%s' %d bins, sumw=%.2g>";
static const char __pyx_k_AnalysisObject_dump[] = "AnalysisObject.dump";
static const char __pyx_k_AnalysisObject_name[] = "AnalysisObject.name";
static const char __pyx_k_AnalysisObject_path[] = "AnalysisObject.path";
static const char __pyx_k_AnalysisObject_type[] = "AnalysisObject.type";
static const char __pyx_k_Bin1D_Dbn1D_xStdDev[] = "Bin1D_Dbn1D.xStdDev";
static const char __pyx_k_Bin1D_Dbn1D_xStdErr[] = "Bin1D_Dbn1D.xStdErr";
static const char __pyx_k_Bin1D_Dbn2D_xStdDev[] = "Bin1D_Dbn2D.xStdDev";
static const char __pyx_k_Bin1D_Dbn2D_xStdErr[] = "Bin1D_Dbn2D.xStdErr";
static const char __pyx_k_Bin2D_Dbn2D_xStdDev[] = "Bin2D_Dbn2D.xStdDev";
static const char __pyx_k_Bin2D_Dbn2D_xStdErr[] = "Bin2D_Dbn2D.xStdErr";
static const char __pyx_k_Bin2D_Dbn2D_xyEdges[] = "Bin2D_Dbn2D.xyEdges";
static const char __pyx_k_Bin2D_Dbn2D_xyFocus[] = "Bin2D_Dbn2D.xyFocus";
static const char __pyx_k_Bin2D_Dbn2D_yStdDev[] = "Bin2D_Dbn2D.yStdDev";
static const char __pyx_k_Bin2D_Dbn2D_yStdErr[] = "Bin2D_Dbn2D.yStdErr";
static const char __pyx_k_Bin2D_Dbn3D_xStdDev[] = "Bin2D_Dbn3D.xStdDev";
static const char __pyx_k_Bin2D_Dbn3D_xStdErr[] = "Bin2D_Dbn3D.xStdErr";
static const char __pyx_k_Bin2D_Dbn3D_xyEdges[] = "Bin2D_Dbn3D.xyEdges";
static const char __pyx_k_Bin2D_Dbn3D_xyFocus[] = "Bin2D_Dbn3D.xyFocus";
static const char __pyx_k_Bin2D_Dbn3D_yStdDev[] = "Bin2D_Dbn3D.yStdDev";
static const char __pyx_k_Bin2D_Dbn3D_yStdErr[] = "Bin2D_Dbn3D.yStdErr";
static const char __pyx_k_Bin___reduce_cython[] = "Bin.__reduce_cython__";
static const char __pyx_k_Dbn0D_effNumEntries[] = "Dbn0D.effNumEntries";
static const char __pyx_k_Dbn1D_effNumEntries[] = "Dbn1D.effNumEntries";
static const char __pyx_k_Dbn2D_effNumEntries[] = "Dbn2D.effNumEntries";
static const char __pyx_k_Dbn3D_effNumEntries[] = "Dbn3D.effNumEntries";
static const char __pyx_k_Point3D_x_g_y_g_z_g[] = "<Point3D(x=%g, y=%g, z=%g)>";
static const char __pyx_k_Profile1D_mergeBins[] = "Profile1D.mergeBins";
static const char __pyx_k_Profile1D_mkScatter[] = "Profile1D.mkScatter";
static const char __pyx_k_Profile1D_underflow[] = "Profile1D.underflow";
static const char __pyx_k_Profile1D_xVariance[] = "Profile1D.xVariance";
static const char __pyx_k_Profile2D_mkScatter[] = "Profile2D.mkScatter";
static const char __pyx_k_Profile2D_xVariance[] = "Profile2D.xVariance";
static const char __pyx_k_Profile2D_yVariance[] = "Profile2D.yVariance";
static const char __pyx_k_ProfileBin1D_stdDev[] = "ProfileBin1D.stdDev";
static const char __pyx_k_ProfileBin1D_stdErr[] = "ProfileBin1D.stdErr";
static const char __pyx_k_ProfileBin1D_sumWY2[] = "ProfileBin1D.sumWY2";
static const char __pyx_k_ProfileBin2D_stdDev[] = "ProfileBin2D.stdDev";
static const char __pyx_k_ProfileBin2D_stdErr[] = "ProfileBin2D.stdErr";
static const char __pyx_k_ProfileBin2D_sumWZ2[] = "ProfileBin2D.sumWZ2";
static const char __pyx_k_Scatter1D_addPoints[] = "Scatter1D.addPoints";
static const char __pyx_k_Scatter1D_mkScatter[] = "Scatter1D.mkScatter";
static const char __pyx_k_Scatter1D_numPoints[] = "Scatter1D.numPoints";
static const char __pyx_k_Scatter2D_addPoints[] = "Scatter2D.addPoints";
static const char __pyx_k_Scatter2D_mkScatter[] = "Scatter2D.mkScatter";
static const char __pyx_k_Scatter2D_numPoints[] = "Scatter2D.numPoints";
static const char __pyx_k_Scatter3D_addPoints[] = "Scatter3D.addPoints";
static const char __pyx_k_Scatter3D_mkScatter[] = "Scatter3D.mkScatter";
static const char __pyx_k_Scatter3D_numPoints[] = "Scatter3D.numPoints";
static const char __pyx_k_include_Counter_pyx[] = "include/Counter.pyx";
static const char __pyx_k_include_Histo1D_pyx[] = "include/Histo1D.pyx";
static const char __pyx_k_include_Histo2D_pyx[] = "include/Histo2D.pyx";
static const char __pyx_k_include_Point1D_pyx[] = "include/Point1D.pyx";
static const char __pyx_k_include_Point2D_pyx[] = "include/Point2D.pyx";
static const char __pyx_k_include_Point3D_pyx[] = "include/Point3D.pyx";
static const char __pyx_k_s_s_sumw_0_2g_err_s[] = "<%s '%s' sumw=%0.2g, err=%s>";
static const char __pyx_k_AnalysisObject_title[] = "AnalysisObject.title";
static const char __pyx_k_Bin2D_Dbn2D_xyStdDev[] = "Bin2D_Dbn2D.xyStdDev";
static const char __pyx_k_Bin2D_Dbn2D_xyStdErr[] = "Bin2D_Dbn2D.xyStdErr";
static const char __pyx_k_Bin2D_Dbn2D_xyWidths[] = "Bin2D_Dbn2D.xyWidths";
static const char __pyx_k_Bin2D_Dbn3D_xyStdDev[] = "Bin2D_Dbn3D.xyStdDev";
static const char __pyx_k_Bin2D_Dbn3D_xyStdErr[] = "Bin2D_Dbn3D.xyStdErr";
static const char __pyx_k_Bin2D_Dbn3D_xyWidths[] = "Bin2D_Dbn3D.xyWidths";
static const char __pyx_k_HistoBin1D_heightErr[] = "HistoBin1D.heightErr";
static const char __pyx_k_HistoBin2D_heightErr[] = "HistoBin2D.heightErr";
static const char __pyx_k_HistoBin2D_volumeErr[] = "HistoBin2D.volumeErr";
static const char __pyx_k_Profile1D_binIndexAt[] = "Profile1D.binIndexAt";
static const char __pyx_k_Profile1D_numEntries[] = "Profile1D.numEntries";
static const char __pyx_k_Profile2D_binIndexAt[] = "Profile2D.binIndexAt";
static const char __pyx_k_Profile2D_numEntries[] = "Profile2D.numEntries";
static const char __pyx_k_Profile2D_xyVariance[] = "Profile2D.xyVariance";
static const char __pyx_k_ProfileBin2D_g_g_g_g[] = "ProfileBin2D(%g, %g, %g, %g)";
static const char __pyx_k_Scatter1D_transformX[] = "Scatter1D.transformX";
static const char __pyx_k_Scatter1D_variations[] = "Scatter1D.variations";
static const char __pyx_k_Scatter2D_transformX[] = "Scatter2D.transformX";
static const char __pyx_k_Scatter2D_transformY[] = "Scatter2D.transformY";
static const char __pyx_k_Scatter2D_variations[] = "Scatter2D.variations";
static const char __pyx_k_Scatter3D_transformX[] = "Scatter3D.transformX";
static const char __pyx_k_Scatter3D_transformY[] = "Scatter3D.transformY";
static const char __pyx_k_Scatter3D_transformZ[] = "Scatter3D.transformZ";
static const char __pyx_k_Scatter3D_variations[] = "Scatter3D.variations";
static const char __pyx_k_s_s_d_bins_sumw_0_2g[] = "<%s '%s' %d bins, sumw=%0.2g>";
static const char __pyx_k_Bin1D_Dbn1D_xVariance[] = "Bin1D_Dbn1D.xVariance";
static const char __pyx_k_Bin1D_Dbn2D_xVariance[] = "Bin1D_Dbn2D.xVariance";
static const char __pyx_k_Bin2D_Dbn2D_xVariance[] = "Bin2D_Dbn2D.xVariance";
static const char __pyx_k_Bin2D_Dbn2D_yVariance[] = "Bin2D_Dbn2D.yVariance";
static const char __pyx_k_Bin2D_Dbn3D_xVariance[] = "Bin2D_Dbn3D.xVariance";
static const char __pyx_k_Bin2D_Dbn3D_yVariance[] = "Bin2D_Dbn3D.yVariance";
static const char __pyx_k_Bin___setstate_cython[] = "Bin.__setstate_cython__";
static const char __pyx_k_Counter_effNumEntries[] = "Counter.effNumEntries";
static const char __pyx_k_Dbn0D___reduce_cython[] = "Dbn0D.__reduce_cython__";
static const char __pyx_k_Dbn1D___reduce_cython[] = "Dbn1D.__reduce_cython__";
static const char __pyx_k_Dbn1D_mean_s_stddev_s[] = "<Dbn1D(mean=%s, stddev=%s)>";
static const char __pyx_k_Dbn2D___reduce_cython[] = "Dbn2D.__reduce_cython__";
static const char __pyx_k_Dbn2D_mean_s_stdDev_s[] = "<Dbn2D(mean=%s, stdDev=%s)>";
static const char __pyx_k_Dbn3D___reduce_cython[] = "Dbn3D.__reduce_cython__";
static const char __pyx_k_Dbn3D_mean_s_stddev_s[] = "Dbn3D(mean=%s, stddev=%s)";
static const char __pyx_k_Histo1D__addBins_bins[] = "_Histo1D__addBins_bins";
static const char __pyx_k_Histo1D_effNumEntries[] = "Histo1D.effNumEntries";
static const char __pyx_k_Histo1D_integralRange[] = "Histo1D.integralRange";
static const char __pyx_k_Histo2D_effNumEntries[] = "Histo2D.effNumEntries";
static const char __pyx_k_HistoBin1D_g_g_sumw_g[] = "HistoBin1D(%g, %g; sumw=%g)";
static const char __pyx_k_Point___reduce_cython[] = "Point.__reduce_cython__";
static const char __pyx_k_ProfileBin1D_variance[] = "ProfileBin1D.variance";
static const char __pyx_k_ProfileBin2D_variance[] = "ProfileBin2D.variance";
static const char __pyx_k_Scatter1D_combineWith[] = "Scatter1D.combineWith";
static const char __pyx_k_Scatter2D_combineWith[] = "Scatter2D.combineWith";
static const char __pyx_k_Scatter3D_combineWith[] = "Scatter3D.combineWith";
static const char __pyx_k_errMap_locals_genexpr[] = "errMap.<locals>.genexpr";
static const char __pyx_k_include_Functions_pyx[] = "include/Functions.pyx";
static const char __pyx_k_include_Profile1D_pyx[] = "include/Profile1D.pyx";
static const char __pyx_k_include_Profile2D_pyx[] = "include/Profile2D.pyx";
static const char __pyx_k_include_Scatter1D_pyx[] = "include/Scatter1D.pyx";
static const char __pyx_k_include_Scatter2D_pyx[] = "include/Scatter2D.pyx";
static const char __pyx_k_include_Scatter3D_pyx[] = "include/Scatter3D.pyx";
static const char __pyx_k_AnalysisObject_setPath[] = "AnalysisObject.setPath";
static const char __pyx_k_Bin2D_Dbn2D_adjacentTo[] = "Bin2D_Dbn2D.adjacentTo";
static const char __pyx_k_Bin2D_Dbn2D_xyVariance[] = "Bin2D_Dbn2D.xyVariance";
static const char __pyx_k_Bin2D_Dbn3D_adjacentTo[] = "Bin2D_Dbn3D.adjacentTo";
static const char __pyx_k_Bin2D_Dbn3D_xyVariance[] = "Bin2D_Dbn3D.xyVariance";
static const char __pyx_k_Histo1D___addBins_bins[] = "Histo1D.__addBins_bins";
static const char __pyx_k_Histo1D__addBins_edges[] = "_Histo1D__addBins_edges";
static const char __pyx_k_Scatter1D_rmVariations[] = "Scatter1D.rmVariations";
static const char __pyx_k_Scatter2D_rmVariations[] = "Scatter2D.rmVariations";
static const char __pyx_k_Scatter3D_rmVariations[] = "Scatter3D.rmVariations";
static const char __pyx_k_hasValidErrorBreakdown[] = "hasValidErrorBreakdown";
static const char __pyx_k_ignoreOffDiagonalTerms[] = "ignoreOffDiagonalTerms";
static const char __pyx_k_include_HistoBin1D_pyx[] = "include/HistoBin1D.pyx";
static const char __pyx_k_include_HistoBin2D_pyx[] = "include/HistoBin2D.pyx";
static const char __pyx_k_updateTotalUncertainty[] = "updateTotalUncertainty";
static const char __pyx_k_AnalysisObject_setTitle[] = "AnalysisObject.setTitle";
static const char __pyx_k_Counter___reduce_cython[] = "Counter.__reduce_cython__";
static const char __pyx_k_Dbn0D___setstate_cython[] = "Dbn0D.__setstate_cython__";
static const char __pyx_k_Dbn1D___setstate_cython[] = "Dbn1D.__setstate_cython__";
static const char __pyx_k_Dbn2D___setstate_cython[] = "Dbn2D.__setstate_cython__";
static const char __pyx_k_Dbn3D___setstate_cython[] = "Dbn3D.__setstate_cython__";
static const char __pyx_k_Histo1D___addBins_edges[] = "Histo1D.__addBins_edges";
static const char __pyx_k_Histo1D___reduce_cython[] = "Histo1D.__reduce_cython__";
static const char __pyx_k_Histo1D__addBins_points[] = "_Histo1D__addBins_points";
static const char __pyx_k_Histo1D__addBins_tuples[] = "_Histo1D__addBins_tuples";
static const char __pyx_k_Histo2D___reduce_cython[] = "Histo2D.__reduce_cython__";
static const char __pyx_k_Point1D___reduce_cython[] = "Point1D.__reduce_cython__";
static const char __pyx_k_Point1D_xErrsFromSource[] = "Point1D.xErrsFromSource";
static const char __pyx_k_Point2D___reduce_cython[] = "Point2D.__reduce_cython__";
static const char __pyx_k_Point2D_yErrsFromSource[] = "Point2D.yErrsFromSource";
static const char __pyx_k_Point3D___reduce_cython[] = "Point3D.__reduce_cython__";
static const char __pyx_k_Point3D_zErrsFromSource[] = "Point3D.zErrsFromSource";
static const char __pyx_k_Point___setstate_cython[] = "Point.__setstate_cython__";
static const char __pyx_k_Profile1D_effNumEntries[] = "Profile1D.effNumEntries";
static const char __pyx_k_Profile2D_effNumEntries[] = "Profile2D.effNumEntries";
static const char __pyx_k_ProfileBin1D_g_g_sumw_g[] = "ProfileBin1D(%g, %g; sumw=%g)";
static const char __pyx_k_Unsupported_bin_of_type[] = "Unsupported bin of type {}";
static const char __pyx_k_Histo1D___addBins_points[] = "Histo1D.__addBins_points";
static const char __pyx_k_Histo1D___addBins_tuples[] = "Histo1D.__addBins_tuples";
static const char __pyx_k_include_ProfileBin1D_pyx[] = "include/ProfileBin1D.pyx";
static const char __pyx_k_include_ProfileBin2D_pyx[] = "include/ProfileBin2D.pyx";
static const char __pyx_k_AnalysisObject_annotation[] = "AnalysisObject.annotation";
static const char __pyx_k_Counter___setstate_cython[] = "Counter.__setstate_cython__";
static const char __pyx_k_Histo1D___setstate_cython[] = "Histo1D.__setstate_cython__";
static const char __pyx_k_Histo2D___setstate_cython[] = "Histo2D.__setstate_cython__";
static const char __pyx_k_HistoBin2D_g_g_g_g_sumw_g[] = "HistoBin2D(%g, %g; %g, %g; sumw=%g)";
static const char __pyx_k_Point1D___setstate_cython[] = "Point1D.__setstate_cython__";
static const char __pyx_k_Point2D___setstate_cython[] = "Point2D.__setstate_cython__";
static const char __pyx_k_Point3D___setstate_cython[] = "Point3D.__setstate_cython__";
static const char __pyx_k_Profile1D___reduce_cython[] = "Profile1D.__reduce_cython__";
static const char __pyx_k_Profile2D___reduce_cython[] = "Profile2D.__reduce_cython__";
static const char __pyx_k_Scatter1D___reduce_cython[] = "Scatter1D.__reduce_cython__";
static const char __pyx_k_Scatter1D__addPoint_point[] = "_Scatter1D__addPoint_point";
static const char __pyx_k_Scatter1D_parseVariations[] = "Scatter1D.parseVariations";
static const char __pyx_k_Scatter2D___reduce_cython[] = "Scatter2D.__reduce_cython__";
static const char __pyx_k_Scatter2D__addPoint_point[] = "_Scatter2D__addPoint_point";
static const char __pyx_k_Scatter2D_parseVariations[] = "Scatter2D.parseVariations";
static const char __pyx_k_Scatter3D___reduce_cython[] = "Scatter3D.__reduce_cython__";
static const char __pyx_k_Scatter3D__addPoint_point[] = "_Scatter3D__addPoint_point";
static const char __pyx_k_AnalysisObject_annotations[] = "AnalysisObject.annotations";
static const char __pyx_k_HistoBin1D___reduce_cython[] = "HistoBin1D.__reduce_cython__";
static const char __pyx_k_HistoBin2D___reduce_cython[] = "HistoBin2D.__reduce_cython__";
static const char __pyx_k_Scatter1D___addPoint_point[] = "Scatter1D.__addPoint_point";
static const char __pyx_k_Scatter2D___addPoint_point[] = "Scatter2D.__addPoint_point";
static const char __pyx_k_Scatter2D_covarianceMatrix[] = "Scatter2D.covarianceMatrix";
static const char __pyx_k_Scatter3D___addPoint_point[] = "Scatter3D.__addPoint_point";
static const char __pyx_k_Scatter3D_covarianceMatrix[] = "Scatter3D.covarianceMatrix";
static const char __pyx_k_include_AnalysisObject_pyx[] = "include/AnalysisObject.pyx";
static const char __pyx_k_AnalysisObject_rmAnnotation[] = "AnalysisObject.rmAnnotation";
static const char __pyx_k_Bin1D_Dbn1D___reduce_cython[] = "Bin1D_Dbn1D.__reduce_cython__";
static const char __pyx_k_Bin1D_Dbn2D___reduce_cython[] = "Bin1D_Dbn2D.__reduce_cython__";
static const char __pyx_k_Bin2D_Dbn2D___reduce_cython[] = "Bin2D_Dbn2D.__reduce_cython__";
static const char __pyx_k_Bin2D_Dbn3D___reduce_cython[] = "Bin2D_Dbn3D.__reduce_cython__";
static const char __pyx_k_Profile1D___setstate_cython[] = "Profile1D.__setstate_cython__";
static const char __pyx_k_Profile2D___setstate_cython[] = "Profile2D.__setstate_cython__";
static const char __pyx_k_Scatter1D___setstate_cython[] = "Scatter1D.__setstate_cython__";
static const char __pyx_k_Scatter2D___setstate_cython[] = "Scatter2D.__setstate_cython__";
static const char __pyx_k_Scatter2D_correlationMatrix[] = "Scatter2D.correlationMatrix";
static const char __pyx_k_Scatter3D___setstate_cython[] = "Scatter3D.__setstate_cython__";
static const char __pyx_k_AnalysisObject_hasAnnotation[] = "AnalysisObject.hasAnnotation";
static const char __pyx_k_AnalysisObject_setAnnotation[] = "AnalysisObject.setAnnotation";
static const char __pyx_k_HistoBin1D___setstate_cython[] = "HistoBin1D.__setstate_cython__";
static const char __pyx_k_HistoBin2D___setstate_cython[] = "HistoBin2D.__setstate_cython__";
static const char __pyx_k_ProfileBin1D___reduce_cython[] = "ProfileBin1D.__reduce_cython__";
static const char __pyx_k_ProfileBin2D___reduce_cython[] = "ProfileBin2D.__reduce_cython__";
static const char __pyx_k_Scatter1D__addPoint_explicit[] = "_Scatter1D__addPoint_explicit";
static const char __pyx_k_Scatter2D__addPoint_explicit[] = "_Scatter2D__addPoint_explicit";
static const char __pyx_k_Scatter3D__addPoint_explicit[] = "_Scatter3D__addPoint_explicit";
static const char __pyx_k_pattern_check_locals_genexpr[] = "_pattern_check.<locals>.genexpr";
static const char __pyx_k_s_s_d_bins_sumw_0_2g_xmean_s[] = "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>";
static const char __pyx_k_writeVariationsToAnnotations[] = "writeVariationsToAnnotations";
static const char __pyx_k_Bin1D_Dbn1D___setstate_cython[] = "Bin1D_Dbn1D.__setstate_cython__";
static const char __pyx_k_Bin1D_Dbn2D___setstate_cython[] = "Bin1D_Dbn2D.__setstate_cython__";
static const char __pyx_k_Bin2D_Dbn2D___setstate_cython[] = "Bin2D_Dbn2D.__setstate_cython__";
static const char __pyx_k_Bin2D_Dbn3D___setstate_cython[] = "Bin2D_Dbn3D.__setstate_cython__";
static const char __pyx_k_Histo1D__init3_locals_genexpr[] = "_Histo1D__init3.<locals>.genexpr";
static const char __pyx_k_Scatter1D___addPoint_explicit[] = "Scatter1D.__addPoint_explicit";
static const char __pyx_k_Scatter2D___addPoint_explicit[] = "Scatter2D.__addPoint_explicit";
static const char __pyx_k_Scatter3D___addPoint_explicit[] = "Scatter3D.__addPoint_explicit";
static const char __pyx_k_AnalysisObject___reduce_cython[] = "AnalysisObject.__reduce_cython__";
static const char __pyx_k_AnalysisObject_annotationsDict[] = "AnalysisObject.annotationsDict";
static const char __pyx_k_ProfileBin1D___setstate_cython[] = "ProfileBin1D.__setstate_cython__";
static const char __pyx_k_ProfileBin2D___setstate_cython[] = "ProfileBin2D.__setstate_cython__";
static const char __pyx_k_annotationsDict_locals_genexpr[] = "annotationsDict.<locals>.genexpr";
static const char __pyx_k_AnalysisObject_clearAnnotations[] = "AnalysisObject.clearAnnotations";
static const char __pyx_k_Null_pointer_referenced_perhaps[] = "Null pointer referenced: perhaps the class is uninitialised.";
static const char __pyx_k_Profile1D__init3_locals_genexpr[] = "_Profile1D__init3.<locals>.genexpr";
static const char __pyx_k_AnalysisObject___setstate_cython[] = "AnalysisObject.__setstate_cython__";
static const char __pyx_k_Callback_is_not_of_type_double_d[] = "Callback is not of type (double) -> double";
static const char __pyx_k_Scatter1D_hasValidErrorBreakdown[] = "Scatter1D.hasValidErrorBreakdown";
static const char __pyx_k_Scatter1D_updateTotalUncertainty[] = "Scatter1D.updateTotalUncertainty";
static const char __pyx_k_Scatter1D_writeVariationsToAnnot[] = "Scatter1D.writeVariationsToAnnotations";
static const char __pyx_k_Scatter2D_hasValidErrorBreakdown[] = "Scatter2D.hasValidErrorBreakdown";
static const char __pyx_k_Scatter2D_updateTotalUncertainty[] = "Scatter2D.updateTotalUncertainty";
static const char __pyx_k_Scatter2D_writeVariationsToAnnot[] = "Scatter2D.writeVariationsToAnnotations";
static const char __pyx_k_Scatter3D_hasValidErrorBreakdown[] = "Scatter3D.hasValidErrorBreakdown";
static const char __pyx_k_Scatter3D_updateTotalUncertainty[] = "Scatter3D.updateTotalUncertainty";
static const char __pyx_k_Scatter3D_writeVariationsToAnnot[] = "Scatter3D.writeVariationsToAnnotations";
static const char __pyx_k_include_generated_Bin1D_Dbn1D_py[] = "include/generated/Bin1D_Dbn1D.pyx";
static const char __pyx_k_include_generated_Bin1D_Dbn2D_py[] = "include/generated/Bin1D_Dbn2D.pyx";
static const char __pyx_k_include_generated_Bin2D_Dbn2D_py[] = "include/generated/Bin2D_Dbn2D.pyx";
static const char __pyx_k_include_generated_Bin2D_Dbn3D_py[] = "include/generated/Bin2D_Dbn3D.pyx";
static const char __pyx_k_self__ptr_cannot_be_converted_to[] = "self._ptr cannot be converted to a Python object for pickling";
/* #### Code section: decls ### */
static PyObject *__pyx_pf_4yoda_4core_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_2getLibPath(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_4getDataPath(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_6getYodaDataPath(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static void __pyx_pf_4yoda_4core_5Dbn0D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn0D_2__init__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_6copy(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_8reset(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_10fill(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_14numEntries(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_16effNumEntries(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_18errW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_20relErrW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_22sumW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_24sumW2(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_26__add__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_28__sub__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_5Dbn1D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn1D_2__init__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_6copy(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_8reset(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_10fill(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_16xMean(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_18xVariance(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_20xStdDev(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_22xStdErr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_24xRMS(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_26numEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_28effNumEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_30errW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_32relErrW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_34sumW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_36sumW2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_38sumWX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_40sumWX2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_42__add__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_44__sub__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_46__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_48__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_5Dbn2D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn2D_2__init__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_6copy(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_8reset(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_10fill(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_16scaleY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_18scaleXY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_20mean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_22variance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_24stdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_26stdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_28rms(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_30numEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_32effNumEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_34errW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_36relErrW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_38sumW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_40sumW2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_42sumWX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_44sumWY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_46sumWX2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_48sumWY2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_50sumWXY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_52__add__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_54__sub__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_56__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_58__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_5Dbn3D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static int __pyx_pf_4yoda_4core_5Dbn3D_2__init__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_6copy(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_8fill(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_10reset(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_16scaleY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_18scaleZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_20scaleXYZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_22mean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_24variance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_26stdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_28stdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_30rms(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_32numEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_34effNumEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_36errW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_38relErrW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_40sumW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_42sumW2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_44sumWX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_46sumWY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_48sumWZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_50sumWX2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_52sumWY2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_54sumWZ2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_56sumWXY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_58sumWXZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_60sumWYZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_62__add__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_64__sub__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_66__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_68__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Counter___init__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_2__repr__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_4reset(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_6clone(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_8fill(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_10numEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_12effNumEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_14sumW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_16sumW2(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_18val(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_20err(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_22relErr(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_24scaleW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_26mkScatter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_28divideBy(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other, PyObject *__pyx_v_efficiency); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_30__iadd__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_32__isub__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_34__add__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_36__sub__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Counter_38__div__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_7Counter_40__truediv__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Counter_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_3Bin___dealloc__(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_2dim(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_4numEntries(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_6effNumEntries(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_8sumW(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_10sumW2(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_3Bin_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_11Bin1D_Dbn1D___init__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_2__repr__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_4xEdges(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_6xMin(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_8xMax(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_10xMid(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_12xWidth(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_14xMean(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_16xFocus(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_18xVariance(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_20xStdDev(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_22xStdErr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_24xRMS(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_26sumWX(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_28sumWX2(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_30merge(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_32__add__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_34__sub__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_11Bin1D_Dbn2D___init__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_2__repr__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_4xEdges(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_6xMin(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_8xMax(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_10xMid(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_12xWidth(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_14xMean(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_16xFocus(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_18xVariance(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_20xStdDev(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_22xStdErr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_24xRMS(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_26sumWX(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_28sumWX2(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_30merge(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_32__add__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_34__sub__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_10HistoBin1D___init__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, double __pyx_v_a, double __pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_2area(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_4height(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_6areaErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_8heightErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_10relErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_12__iadd__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_14__isub__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_16__add__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_18__sub__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_20__repr__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_12ProfileBin1D___init__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, double __pyx_v_a, double __pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_2mean(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_4variance(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_6stdDev(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_8stdErr(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_10rms(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_12sumWY(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_14sumWY2(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_16__iadd__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_18__isub__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_20__add__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_22__sub__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_24__repr__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_14AnalysisObject___dealloc__(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_2type(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_4dim(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_6annotations(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_15annotationsDict_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_8annotationsDict(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_10annotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k, PyObject *__pyx_v_default); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_12setAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k, PyObject *__pyx_v_v); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_14hasAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_16rmAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_18clearAnnotations(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_20dump(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_22name(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_24path(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_26setPath(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_28title(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_30setTitle(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_32__repr__(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Histo1D___init__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_2__init2(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_15_Histo1D__init3_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_4__init3(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_bins_or_edges, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_6__init5(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_low, PyObject *__pyx_v_high, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_7Histo1D_8__len__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_10__getitem__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_12__repr__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_14reset(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_16clone(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_18fill(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_20fillBin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, size_t __pyx_v_ix, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_22totalDbn(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_24underflow(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_26overflow(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_28integral(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_30integralRange(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, int __pyx_v_ia, int __pyx_v_ib); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_32integralTo(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, int __pyx_v_ia, PyObject *__pyx_v_includeunderflow); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_34numEntries(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_36effNumEntries(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_38sumW(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_40sumW2(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_42xMean(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_44xVariance(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_46xStdDev(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_48xStdErr(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_50xRMS(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_52scaleW(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_54normalize(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_56xMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_58xMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_60numBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_62numBinsX(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_64bins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_66bin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_68binIndexAt(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_70binAt(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_72addBin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_low, PyObject *__pyx_v_high); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_74addBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges_or_bins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_76__addBins_edges(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_78__addBins_bins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_bins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_80__addBins_points(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_points); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_82__addBins_tuples(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_tuples); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_84mergeBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_ia, PyObject *__pyx_v_ib); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_86rebinBy(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_88rebinTo(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_90rebin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_92mkScatter(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_94toIntegral(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_efficiency, PyObject *__pyx_v_includeunderflow, PyObject *__pyx_v_includeoverflow); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_96divideBy(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_h, PyObject *__pyx_v_efficiency); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_98__iadd__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_100__isub__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_102__add__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_104__sub__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_106__div__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_108__truediv__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_110_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_112xEdges(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_114xWidths(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_116xMins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_118xMaxs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_120xMids(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_122xFoci(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_124xVals(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_foci); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_126xErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_foci); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_128xMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_130xMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_132sumWs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_134heights(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_136areas(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_138yVals(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_140heightErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_142areaErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_144relErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_146yErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_148yMins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_150yMaxs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_152yMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_154yMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_156__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_158__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Profile1D___init__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_2__init2(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_17_Profile1D__init3_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_4__init3(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_bins_or_edges, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_6__init5(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, size_t __pyx_v_nbins, double __pyx_v_lower, double __pyx_v_upper, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Profile1D_8__len__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_10__getitem__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_12__repr__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_14reset(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_16clone(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_18fill(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_20fillBin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, size_t __pyx_v_ix, double __pyx_v_y, double __pyx_v_weight, double __pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_22totalDbn(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_24underflow(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_26overflow(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_28numEntries(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_30effNumEntries(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_32sumW(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_34sumW2(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_36xMean(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_38xVariance(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_40xStdDev(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_42xStdErr(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_44xRMS(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_46scaleW(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, double __pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_48scaleY(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, double __pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_50xMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_52xMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_54numBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_56numBinsX(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_58bins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_60bin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_62binIndexAt(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_64binAt(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_66addBin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_low, PyObject *__pyx_v_high); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_68addBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_70mergeBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_a, PyObject *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_72rebinBy(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_74rebinTo(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_edges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_76rebin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_78mkScatter(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_usestddev, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_80divideBy(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_h); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_82__iadd__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_84__isub__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_86__add__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_88__sub__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_90__div__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_92__truediv__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_94_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_96xEdges(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_98xWidths(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_100xMins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_102xMaxs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_104xMids(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_106xFoci(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_108xVals(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_foci); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_110xErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_foci); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_112xMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_114xMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_116sumWs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_118yMeans(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_120yVals(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_122yStdErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_124yStdDevs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_126yErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_128yMins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_130yMaxs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_132yMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_134yMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_136__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_138__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_11Bin2D_Dbn2D___init__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_2__repr__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_4xEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_6yEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_8xyEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_10xMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_12yMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_14xyMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_16xMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_18yMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_20xyMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_22xMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_24yMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_26xyMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_28xWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_30yWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_32xyWidths(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_34area(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_36xFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_38yFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_40xyFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_42xMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_44yMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_46xyMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_48xVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_50yVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_52xyVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_54xStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_56yStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_60xStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_62yStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_66xRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_68yRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_70xyRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_72sumWX(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_74sumWY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_76sumWXY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_78sumWX2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_80sumWY2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_84__add__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_86__sub__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_11Bin2D_Dbn3D___init__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_2__repr__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_4xEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_6yEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_8xyEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_10xMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_12yMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_14xyMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_16xMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_18yMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_20xyMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_22xMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_24yMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_26xyMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_28xWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_30yWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_32xyWidths(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_34area(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_36xFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_38yFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_40xyFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_42xMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_44yMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_46xyMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_48xVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_50yVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_52xyVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_54xStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_56yStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_60xStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_62yStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_66xRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_68yRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_70xyRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_72sumWX(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_74sumWY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_76sumWXY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_78sumWX2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_80sumWY2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_84__add__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_86__sub__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_12ProfileBin2D___init__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_2mean(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_4stdDev(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_6variance(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_8stdErr(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_10rms(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_12sumWZ(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_14sumWZ2(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_16__add__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_18__sub__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_20__repr__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_10HistoBin2D___init__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_2volume(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_4height(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_6volumeErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_8heightErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_10relErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_12__add__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_14__sub__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_b); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_16__repr__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Histo2D___init__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_2__init2(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_4__init4(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xedges, PyObject *__pyx_v_yedges, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_6__init8(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_nxbins, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_nybins, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_7Histo2D_8__len__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_10__getitem__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_12__repr__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_14reset(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_16clone(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_18fill(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_20fillBin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, size_t __pyx_v_i, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_22totalDbn(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_24integral(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_26numEntries(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_28effNumEntries(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_30sumW(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_32sumW2(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_34xMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_36yMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_38xyMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_40xVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_42yVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_44xyVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_46xStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_48yStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_50xyStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_52xStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_54yStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_56xyStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_58xRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_60yRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_62xyRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_64scaleW(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_66normalize(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, double __pyx_v_normto, int __pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_68xMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_70xMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_72yMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_74yMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_76numBins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_78numBinsX(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_80numBinsY(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_82bins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_84bin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_86binIndexAt(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_88binAt(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_90addBin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_92addBins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_bins); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_94mkScatter(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_binareadiv); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_96divideBy(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_h, PyObject *__pyx_v_efficiency); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_98__iadd__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_100__isub__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_102__add__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_104__sub__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_106__div__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_108__truediv__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_110_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_112xEdges(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_114xWidths(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_116xMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_118xMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_120xMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_122xMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_124xMids(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_126xFoci(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_128xVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_130xErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_132yEdges(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_134yWidths(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_136yMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_138yMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_140yMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_142yMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_144yMids(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_146yFoci(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_148yVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_150yErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_152sumWs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_154heights(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_156volumes(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_158zVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_vol, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_160heightErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_162volumeErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_164relErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_166zErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_vol, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_168zMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_170zMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_172zMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_174zMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_176__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_178__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Profile2D___init__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_2__init2(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_4__init4(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xedges, PyObject *__pyx_v_yedges, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_6__init8(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_nxbins, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_nybins, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Profile2D_8__len__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_10__getitem__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_12__repr__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_14reset(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_16clone(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_18fill(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double __pyx_v_z, double __pyx_v_weight, double __pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_20fillBin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, size_t __pyx_v_i, double __pyx_v_z, double __pyx_v_weight, double __pyx_v_fraction); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_22totalDbn(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_24numEntries(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_26effNumEntries(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_28sumW(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_30sumW2(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_32xMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_34yMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_36xyMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_38xVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_40yVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_42xyVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_44xStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_46yStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_48xyStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_50xStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_52yStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_54xyStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_56xRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_58yRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_60xyRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_62scaleW(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_w); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_64scaleZ(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_66xMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_68xMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_70yMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_72yMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_74numBins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_76numBinsX(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_78numBinsY(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_80bins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_82bin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_84binIndexAt(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_86binAt(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_88addBin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_xlow, double __pyx_v_xhigh, double __pyx_v_ylow, double __pyx_v_yhigh); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_90addBins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xcuts, PyObject *__pyx_v_ycuts); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_92mkScatter(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_usestddev); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_94divideBy(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_h); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_96__iadd__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_98__isub__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_100__add__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_102__sub__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_104__div__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
#endif
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_106__truediv__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_108_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_110xEdges(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_112xWidths(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_114xMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_116xMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_118xMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_120xMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_122xMids(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_124xFoci(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_126xVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_128xErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_130yEdges(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_132yWidths(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_134yMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_136yMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_138yMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_140yMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_142yMids(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_144yFoci(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_146yVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_148yErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_150sumWs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_152zMeans(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_154zVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_156zStdErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_158zStdDevs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_160zErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_162zMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_164zMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_166zMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_168zMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_170__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_172__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static void __pyx_pf_4yoda_4core_5Point___dealloc__(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_2dim(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_4val(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_6setVal(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_8errs(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_10setErr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_12setErrs(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_14errMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_16setErrMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_18errPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_20setErrPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_22errAvg(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_24set(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val, PyObject *__pyx_v_source, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_6errMap_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_26errMap(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_28rmVariations(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_30scale(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Point_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Point1D___init__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_2copy(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_4setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_6setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_8x(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_10setX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_12xErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_14xErrsFromSource(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_16setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_18setYErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_20xMin(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_22xMax(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_24xErrAvg(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_26scaleX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_28__repr__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_30__richcmp__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point1D_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Point2D___init__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_2copy(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_4x(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_6setX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_8xErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_10setXErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_12xMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_14xMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_16xErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_18y(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_20setY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_22yErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_24yErrsFromSource(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_26setYErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_28yMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_30yMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_32yErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_34scaleX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_36scaleY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_38scaleXY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_40scale(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_42__repr__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_44__richcmp__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_46__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point2D_48__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_7Point3D___init__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_zerrs, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_2copy(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_4x(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_6setX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_8xErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_10setXErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_12xMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_14xMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_16xErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_18y(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_20setY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_y); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_22yErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_24setYErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_26yMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_28yMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_30yErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_32z(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_34setZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_z); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_36zErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_38zErrsFromSource(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_40setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_42setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_44zMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_46zMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_48zErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_50scaleX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_52scaleY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ay); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_54scaleZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_az); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_56scaleXYZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_58scaleXYZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_60__repr__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_62__richcmp__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_64__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_7Point3D_66__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Scatter1D___init__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_6clone(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_10reset(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter1D_14__len__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_16points(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_18point(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_xerrs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_p); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_40scale(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_42transformX(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_44parseVariations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_46updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_50variations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_52rmVariations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_56_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_58xVals(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_60xMins(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_62xMaxs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_64xMin(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_66xMax(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_68__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_70__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Scatter2D___init__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_6clone(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_10reset(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter2D_14__len__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_16points(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_18point(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_p); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_40scaleY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_42scaleXY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_44scale(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_46transformX(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_48transformY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_50parseVariations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_52updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_56variations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_58rmVariations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_60_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_62covarianceMatrix(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_66correlationMatrix(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_68xVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_70xMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_72xMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_74xErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_76xErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_78xMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_80xMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_82yVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_84yMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_86yMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_88yErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_90yErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_92yMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_94yMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_96__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_98__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_4yoda_4core_9Scatter3D___init__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_points, char *__pyx_v_path, char *__pyx_v_title); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_6clone(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_10reset(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter3D_14__len__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_16points(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_18point(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, size_t __pyx_v_i); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_py_ix); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_zerrs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_p); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_iterable); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idx); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idxs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_others); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_40scaleY(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_42scaleZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_44scaleXYZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_46scale(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_48transformX(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_50transformY(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_52transformZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_54updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_58variations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_60rmVariations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_64covarianceMatrix(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_xs); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_68xVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_70xMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_72xMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_74xErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_76xMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_78xMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_80yVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_82yMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_84yMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_86yErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_88yMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_90yMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_92zVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_94zMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_96zMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_98zErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_100zMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_102zMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_104__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_106__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_4yoda_4core_8mkScatter(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_p_usestddev, PyObject *__pyx_v_h_binsizediv, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth); /* proto */
static PyObject *__pyx_pf_4yoda_4core_10divide(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao1, PyObject *__pyx_v_ao2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_12linspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14logspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax); /* proto */
static PyObject *__pyx_pf_4yoda_4core_16pdfspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax, PyObject *__pyx_v_fn, PyObject *__pyx_v_nsample); /* proto */
static PyObject *__pyx_pf_4yoda_4core_18index_between(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_binedges); /* proto */
static PyObject *__pyx_pf_4yoda_4core_20mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample); /* proto */
static PyObject *__pyx_pf_4yoda_4core_22covariance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_24correlation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14_pattern_check_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_14_pattern_check_3genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0); /* proto */
static PyObject *__pyx_pf_4yoda_4core_26_pattern_check(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_28_bytestr_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename); /* proto */
static PyObject *__pyx_pf_4yoda_4core_30_str_to_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s, PyObject *__pyx_v_file_or_filename); /* proto */
static PyObject *__pyx_pf_4yoda_4core_32_istxt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_34_mktxtifstr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_4yoda_4core_36read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_38readYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_40readFLAT(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_42readAIDA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns); /* proto */
static PyObject *__pyx_pf_4yoda_4core_44write(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_filename, PyObject *__pyx_v_precision); /* proto */
static PyObject *__pyx_pf_4yoda_4core_46writeYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision); /* proto */
static PyObject *__pyx_pf_4yoda_4core_48writeFLAT(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision); /* proto */
static PyObject *__pyx_pf_4yoda_4core_50writeAIDA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Index___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_index_map, PyObject *__pyx_v_repr_string); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Index_2toDict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_5Index_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_4yoda_4core_52mkIndexYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename); /* proto */
static PyObject *__pyx_tp_new_4yoda_4core_Dbn0D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Dbn1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Dbn3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Bin(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Bin1D_Dbn1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Bin1D_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_HistoBin1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_ProfileBin1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_AnalysisObject(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Counter(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Histo1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Profile1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Bin2D_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Bin2D_Dbn3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_ProfileBin2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_HistoBin2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Histo2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Profile2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Point(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Point1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Point2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Point3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Scatter1D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Scatter2D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core_Scatter3D(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct__annotationsDict(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_2_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_3_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_4_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_5__pattern_check(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_7_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_items = {0, 0, 0, 0, 0};
static __Pyx_CachedCFunction __pyx_umethod_PyList_Type_reshape = {0, 0, 0, 0, 0};
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  #ifdef __Pyx_CyFunction_USED
  PyTypeObject *__pyx_CyFunctionType;
  #endif
  #ifdef __Pyx_FusedFunction_USED
  PyTypeObject *__pyx_FusedFunctionType;
  #endif
  #ifdef __Pyx_Generator_USED
  PyTypeObject *__pyx_GeneratorType;
  #endif
  #ifdef __Pyx_IterableCoroutine_USED
  PyTypeObject *__pyx_IterableCoroutineType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineAwaitType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineType;
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_4yoda_4util_Base;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  PyTypeObject *__pyx_ptype_7cpython_4type_type;
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  #endif
  #if CYTHON_USE_MODULE_STATE
  PyObject *__pyx_type_4yoda_4core_Dbn0D;
  PyObject *__pyx_type_4yoda_4core_Dbn1D;
  PyObject *__pyx_type_4yoda_4core_Dbn2D;
  PyObject *__pyx_type_4yoda_4core_Dbn3D;
  PyObject *__pyx_type_4yoda_4core_Bin;
  PyObject *__pyx_type_4yoda_4core_Bin1D_Dbn1D;
  PyObject *__pyx_type_4yoda_4core_Bin1D_Dbn2D;
  PyObject *__pyx_type_4yoda_4core_HistoBin1D;
  PyObject *__pyx_type_4yoda_4core_ProfileBin1D;
  PyObject *__pyx_type_4yoda_4core_AnalysisObject;
  PyObject *__pyx_type_4yoda_4core_Counter;
  PyObject *__pyx_type_4yoda_4core_Histo1D;
  PyObject *__pyx_type_4yoda_4core_Profile1D;
  PyObject *__pyx_type_4yoda_4core_Bin2D_Dbn2D;
  PyObject *__pyx_type_4yoda_4core_Bin2D_Dbn3D;
  PyObject *__pyx_type_4yoda_4core_ProfileBin2D;
  PyObject *__pyx_type_4yoda_4core_HistoBin2D;
  PyObject *__pyx_type_4yoda_4core_Histo2D;
  PyObject *__pyx_type_4yoda_4core_Profile2D;
  PyObject *__pyx_type_4yoda_4core_Point;
  PyObject *__pyx_type_4yoda_4core_Point1D;
  PyObject *__pyx_type_4yoda_4core_Point2D;
  PyObject *__pyx_type_4yoda_4core_Point3D;
  PyObject *__pyx_type_4yoda_4core_Scatter1D;
  PyObject *__pyx_type_4yoda_4core_Scatter2D;
  PyObject *__pyx_type_4yoda_4core_Scatter3D;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr;
  PyObject *__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr;
  #endif
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn0D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Dbn3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Bin;
  PyTypeObject *__pyx_ptype_4yoda_4core_Bin1D_Dbn1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Bin1D_Dbn2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_HistoBin1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_ProfileBin1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_AnalysisObject;
  PyTypeObject *__pyx_ptype_4yoda_4core_Counter;
  PyTypeObject *__pyx_ptype_4yoda_4core_Histo1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Profile1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Bin2D_Dbn2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Bin2D_Dbn3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_ProfileBin2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_HistoBin2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Histo2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Profile2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Point3D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter1D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter2D;
  PyTypeObject *__pyx_ptype_4yoda_4core_Scatter3D;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr;
  PyTypeObject *__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr;
  PyObject *__pyx_kp_s_0_2e;
  PyObject *__pyx_n_s_AO;
  PyObject *__pyx_n_s_AnalysisObject;
  PyObject *__pyx_n_s_AnalysisObject___reduce_cython;
  PyObject *__pyx_n_s_AnalysisObject___setstate_cython;
  PyObject *__pyx_n_s_AnalysisObject_annotation;
  PyObject *__pyx_n_s_AnalysisObject_annotations;
  PyObject *__pyx_n_s_AnalysisObject_annotationsDict;
  PyObject *__pyx_n_s_AnalysisObject_clearAnnotations;
  PyObject *__pyx_n_s_AnalysisObject_dim;
  PyObject *__pyx_n_s_AnalysisObject_dump;
  PyObject *__pyx_n_s_AnalysisObject_hasAnnotation;
  PyObject *__pyx_n_s_AnalysisObject_name;
  PyObject *__pyx_n_s_AnalysisObject_path;
  PyObject *__pyx_n_s_AnalysisObject_rmAnnotation;
  PyObject *__pyx_n_s_AnalysisObject_setAnnotation;
  PyObject *__pyx_n_s_AnalysisObject_setPath;
  PyObject *__pyx_n_s_AnalysisObject_setTitle;
  PyObject *__pyx_n_s_AnalysisObject_title;
  PyObject *__pyx_n_s_AnalysisObject_type;
  PyObject *__pyx_n_s_AssertionError;
  PyObject *__pyx_n_s_Bin;
  PyObject *__pyx_n_s_Bin1D_Dbn1D;
  PyObject *__pyx_n_s_Bin1D_Dbn1D___reduce_cython;
  PyObject *__pyx_n_s_Bin1D_Dbn1D___setstate_cython;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_merge;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_sumWX;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_sumWX2;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xEdges;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xFocus;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xMax;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xMean;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xMid;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xMin;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xRMS;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xStdDev;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xStdErr;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xVariance;
  PyObject *__pyx_n_s_Bin1D_Dbn1D_xWidth;
  PyObject *__pyx_n_s_Bin1D_Dbn2D;
  PyObject *__pyx_n_s_Bin1D_Dbn2D___reduce_cython;
  PyObject *__pyx_n_s_Bin1D_Dbn2D___setstate_cython;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_merge;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_sumWX;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_sumWX2;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xEdges;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xFocus;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xMax;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xMean;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xMid;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xMin;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xRMS;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xStdDev;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xStdErr;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xVariance;
  PyObject *__pyx_n_s_Bin1D_Dbn2D_xWidth;
  PyObject *__pyx_n_s_Bin2D_Dbn2D;
  PyObject *__pyx_n_s_Bin2D_Dbn2D___reduce_cython;
  PyObject *__pyx_n_s_Bin2D_Dbn2D___setstate_cython;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_adjacentTo;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_area;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_sumWX;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_sumWX2;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_sumWXY;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_sumWY;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_sumWY2;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xMax;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xMean;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xMid;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xMin;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xWidth;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyMax;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyMean;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyMid;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyMin;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_xyWidths;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yMax;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yMean;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yMid;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yMin;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn2D_yWidth;
  PyObject *__pyx_n_s_Bin2D_Dbn3D;
  PyObject *__pyx_n_s_Bin2D_Dbn3D___reduce_cython;
  PyObject *__pyx_n_s_Bin2D_Dbn3D___setstate_cython;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_adjacentTo;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_area;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_sumWX;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_sumWX2;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_sumWXY;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_sumWY;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_sumWY2;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xMax;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xMean;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xMid;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xMin;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xWidth;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyMax;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyMean;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyMid;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyMin;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_xyWidths;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yEdges;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yFocus;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yMax;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yMean;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yMid;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yMin;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yRMS;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yStdDev;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yStdErr;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yVariance;
  PyObject *__pyx_n_s_Bin2D_Dbn3D_yWidth;
  PyObject *__pyx_n_s_Bin___reduce_cython;
  PyObject *__pyx_n_s_Bin___setstate_cython;
  PyObject *__pyx_n_s_Bin_dim;
  PyObject *__pyx_n_s_Bin_effNumEntries;
  PyObject *__pyx_n_s_Bin_numEntries;
  PyObject *__pyx_n_s_Bin_sumW;
  PyObject *__pyx_n_s_Bin_sumW2;
  PyObject *__pyx_n_s_CFUNCTYPE;
  PyObject *__pyx_kp_s_Callback_is_not_of_type_double_d;
  PyObject *__pyx_n_s_Counter;
  PyObject *__pyx_n_s_Counter___reduce_cython;
  PyObject *__pyx_n_s_Counter___setstate_cython;
  PyObject *__pyx_n_s_Counter_clone;
  PyObject *__pyx_n_s_Counter_divideBy;
  PyObject *__pyx_n_s_Counter_effNumEntries;
  PyObject *__pyx_n_s_Counter_err;
  PyObject *__pyx_n_s_Counter_fill;
  PyObject *__pyx_n_s_Counter_mkScatter;
  PyObject *__pyx_n_s_Counter_numEntries;
  PyObject *__pyx_n_s_Counter_relErr;
  PyObject *__pyx_n_s_Counter_reset;
  PyObject *__pyx_n_s_Counter_scaleW;
  PyObject *__pyx_n_s_Counter_sumW;
  PyObject *__pyx_n_s_Counter_sumW2;
  PyObject *__pyx_n_s_Counter_val;
  PyObject *__pyx_n_s_Dbn0D;
  PyObject *__pyx_n_s_Dbn0D___reduce_cython;
  PyObject *__pyx_n_s_Dbn0D___setstate_cython;
  PyObject *__pyx_n_s_Dbn0D_copy;
  PyObject *__pyx_n_s_Dbn0D_effNumEntries;
  PyObject *__pyx_n_s_Dbn0D_errW;
  PyObject *__pyx_n_s_Dbn0D_fill;
  PyObject *__pyx_n_s_Dbn0D_numEntries;
  PyObject *__pyx_n_s_Dbn0D_relErrW;
  PyObject *__pyx_n_s_Dbn0D_reset;
  PyObject *__pyx_n_s_Dbn0D_scaleW;
  PyObject *__pyx_n_s_Dbn0D_sumW;
  PyObject *__pyx_n_s_Dbn0D_sumW2;
  PyObject *__pyx_kp_s_Dbn0D_val_g_err_g;
  PyObject *__pyx_n_s_Dbn1D;
  PyObject *__pyx_n_s_Dbn1D___reduce_cython;
  PyObject *__pyx_n_s_Dbn1D___setstate_cython;
  PyObject *__pyx_n_s_Dbn1D_copy;
  PyObject *__pyx_n_s_Dbn1D_effNumEntries;
  PyObject *__pyx_n_s_Dbn1D_errW;
  PyObject *__pyx_n_s_Dbn1D_fill;
  PyObject *__pyx_kp_s_Dbn1D_mean_s_stddev_s;
  PyObject *__pyx_n_s_Dbn1D_numEntries;
  PyObject *__pyx_n_s_Dbn1D_relErrW;
  PyObject *__pyx_n_s_Dbn1D_reset;
  PyObject *__pyx_n_s_Dbn1D_scaleW;
  PyObject *__pyx_n_s_Dbn1D_scaleX;
  PyObject *__pyx_n_s_Dbn1D_sumW;
  PyObject *__pyx_n_s_Dbn1D_sumW2;
  PyObject *__pyx_n_s_Dbn1D_sumWX;
  PyObject *__pyx_n_s_Dbn1D_sumWX2;
  PyObject *__pyx_n_s_Dbn1D_xMean;
  PyObject *__pyx_n_s_Dbn1D_xRMS;
  PyObject *__pyx_n_s_Dbn1D_xStdDev;
  PyObject *__pyx_n_s_Dbn1D_xStdErr;
  PyObject *__pyx_n_s_Dbn1D_xVariance;
  PyObject *__pyx_n_s_Dbn2D;
  PyObject *__pyx_n_s_Dbn2D___reduce_cython;
  PyObject *__pyx_n_s_Dbn2D___setstate_cython;
  PyObject *__pyx_n_s_Dbn2D_copy;
  PyObject *__pyx_n_s_Dbn2D_effNumEntries;
  PyObject *__pyx_n_s_Dbn2D_errW;
  PyObject *__pyx_n_s_Dbn2D_fill;
  PyObject *__pyx_n_s_Dbn2D_mean;
  PyObject *__pyx_kp_s_Dbn2D_mean_s_stdDev_s;
  PyObject *__pyx_n_s_Dbn2D_numEntries;
  PyObject *__pyx_n_s_Dbn2D_relErrW;
  PyObject *__pyx_n_s_Dbn2D_reset;
  PyObject *__pyx_n_s_Dbn2D_rms;
  PyObject *__pyx_n_s_Dbn2D_scaleW;
  PyObject *__pyx_n_s_Dbn2D_scaleX;
  PyObject *__pyx_n_s_Dbn2D_scaleXY;
  PyObject *__pyx_n_s_Dbn2D_scaleY;
  PyObject *__pyx_n_s_Dbn2D_stdDev;
  PyObject *__pyx_n_s_Dbn2D_stdErr;
  PyObject *__pyx_n_s_Dbn2D_sumW;
  PyObject *__pyx_n_s_Dbn2D_sumW2;
  PyObject *__pyx_n_s_Dbn2D_sumWX;
  PyObject *__pyx_n_s_Dbn2D_sumWX2;
  PyObject *__pyx_n_s_Dbn2D_sumWXY;
  PyObject *__pyx_n_s_Dbn2D_sumWY;
  PyObject *__pyx_n_s_Dbn2D_sumWY2;
  PyObject *__pyx_n_s_Dbn2D_variance;
  PyObject *__pyx_n_s_Dbn3D;
  PyObject *__pyx_n_s_Dbn3D___reduce_cython;
  PyObject *__pyx_n_s_Dbn3D___setstate_cython;
  PyObject *__pyx_n_s_Dbn3D_copy;
  PyObject *__pyx_n_s_Dbn3D_effNumEntries;
  PyObject *__pyx_n_s_Dbn3D_errW;
  PyObject *__pyx_n_s_Dbn3D_fill;
  PyObject *__pyx_n_s_Dbn3D_mean;
  PyObject *__pyx_kp_s_Dbn3D_mean_s_stddev_s;
  PyObject *__pyx_n_s_Dbn3D_numEntries;
  PyObject *__pyx_n_s_Dbn3D_relErrW;
  PyObject *__pyx_n_s_Dbn3D_reset;
  PyObject *__pyx_n_s_Dbn3D_rms;
  PyObject *__pyx_n_s_Dbn3D_scaleW;
  PyObject *__pyx_n_s_Dbn3D_scaleX;
  PyObject *__pyx_n_s_Dbn3D_scaleXYZ;
  PyObject *__pyx_n_s_Dbn3D_scaleY;
  PyObject *__pyx_n_s_Dbn3D_scaleZ;
  PyObject *__pyx_n_s_Dbn3D_stdDev;
  PyObject *__pyx_n_s_Dbn3D_stdErr;
  PyObject *__pyx_n_s_Dbn3D_sumW;
  PyObject *__pyx_n_s_Dbn3D_sumW2;
  PyObject *__pyx_n_s_Dbn3D_sumWX;
  PyObject *__pyx_n_s_Dbn3D_sumWX2;
  PyObject *__pyx_n_s_Dbn3D_sumWXY;
  PyObject *__pyx_n_s_Dbn3D_sumWXZ;
  PyObject *__pyx_n_s_Dbn3D_sumWY;
  PyObject *__pyx_n_s_Dbn3D_sumWY2;
  PyObject *__pyx_n_s_Dbn3D_sumWYZ;
  PyObject *__pyx_n_s_Dbn3D_sumWZ;
  PyObject *__pyx_n_s_Dbn3D_sumWZ2;
  PyObject *__pyx_n_s_Dbn3D_variance;
  PyObject *__pyx_n_s_H1D;
  PyObject *__pyx_n_s_H2D;
  PyObject *__pyx_n_s_Histo1D;
  PyObject *__pyx_n_s_Histo1D___addBins_bins;
  PyObject *__pyx_n_s_Histo1D___addBins_edges;
  PyObject *__pyx_n_s_Histo1D___addBins_points;
  PyObject *__pyx_n_s_Histo1D___addBins_tuples;
  PyObject *__pyx_n_s_Histo1D___init2;
  PyObject *__pyx_n_s_Histo1D___init3;
  PyObject *__pyx_n_s_Histo1D___init5;
  PyObject *__pyx_n_s_Histo1D___reduce_cython;
  PyObject *__pyx_n_s_Histo1D___setstate_cython;
  PyObject *__pyx_n_s_Histo1D__addBins_bins;
  PyObject *__pyx_n_s_Histo1D__addBins_edges;
  PyObject *__pyx_n_s_Histo1D__addBins_points;
  PyObject *__pyx_n_s_Histo1D__addBins_tuples;
  PyObject *__pyx_n_s_Histo1D__init2;
  PyObject *__pyx_n_s_Histo1D__init3;
  PyObject *__pyx_n_s_Histo1D__init3_locals_genexpr;
  PyObject *__pyx_n_s_Histo1D__init5;
  PyObject *__pyx_n_s_Histo1D__mknp;
  PyObject *__pyx_n_s_Histo1D_addBin;
  PyObject *__pyx_n_s_Histo1D_addBins;
  PyObject *__pyx_n_s_Histo1D_areaErrs;
  PyObject *__pyx_n_s_Histo1D_areas;
  PyObject *__pyx_n_s_Histo1D_bin;
  PyObject *__pyx_n_s_Histo1D_binAt;
  PyObject *__pyx_n_s_Histo1D_binIndexAt;
  PyObject *__pyx_n_s_Histo1D_bins;
  PyObject *__pyx_n_s_Histo1D_clone;
  PyObject *__pyx_n_s_Histo1D_divideBy;
  PyObject *__pyx_n_s_Histo1D_effNumEntries;
  PyObject *__pyx_n_s_Histo1D_fill;
  PyObject *__pyx_n_s_Histo1D_fillBin;
  PyObject *__pyx_n_s_Histo1D_heightErrs;
  PyObject *__pyx_n_s_Histo1D_heights;
  PyObject *__pyx_n_s_Histo1D_integral;
  PyObject *__pyx_n_s_Histo1D_integralRange;
  PyObject *__pyx_n_s_Histo1D_integralTo;
  PyObject *__pyx_n_s_Histo1D_mergeBins;
  PyObject *__pyx_n_s_Histo1D_mkScatter;
  PyObject *__pyx_n_s_Histo1D_normalize;
  PyObject *__pyx_n_s_Histo1D_numBins;
  PyObject *__pyx_n_s_Histo1D_numBinsX;
  PyObject *__pyx_n_s_Histo1D_numEntries;
  PyObject *__pyx_n_s_Histo1D_overflow;
  PyObject *__pyx_n_s_Histo1D_rebin;
  PyObject *__pyx_n_s_Histo1D_rebinBy;
  PyObject *__pyx_n_s_Histo1D_rebinTo;
  PyObject *__pyx_n_s_Histo1D_relErrs;
  PyObject *__pyx_n_s_Histo1D_reset;
  PyObject *__pyx_n_s_Histo1D_scaleW;
  PyObject *__pyx_n_s_Histo1D_sumW;
  PyObject *__pyx_n_s_Histo1D_sumW2;
  PyObject *__pyx_n_s_Histo1D_sumWs;
  PyObject *__pyx_n_s_Histo1D_toIntegral;
  PyObject *__pyx_n_s_Histo1D_totalDbn;
  PyObject *__pyx_n_s_Histo1D_underflow;
  PyObject *__pyx_n_s_Histo1D_xEdges;
  PyObject *__pyx_n_s_Histo1D_xErrs;
  PyObject *__pyx_n_s_Histo1D_xFoci;
  PyObject *__pyx_n_s_Histo1D_xMax;
  PyObject *__pyx_n_s_Histo1D_xMaxs;
  PyObject *__pyx_n_s_Histo1D_xMean;
  PyObject *__pyx_n_s_Histo1D_xMids;
  PyObject *__pyx_n_s_Histo1D_xMin;
  PyObject *__pyx_n_s_Histo1D_xMins;
  PyObject *__pyx_n_s_Histo1D_xRMS;
  PyObject *__pyx_n_s_Histo1D_xStdDev;
  PyObject *__pyx_n_s_Histo1D_xStdErr;
  PyObject *__pyx_n_s_Histo1D_xVals;
  PyObject *__pyx_n_s_Histo1D_xVariance;
  PyObject *__pyx_n_s_Histo1D_xWidths;
  PyObject *__pyx_n_s_Histo1D_yErrs;
  PyObject *__pyx_n_s_Histo1D_yMax;
  PyObject *__pyx_n_s_Histo1D_yMaxs;
  PyObject *__pyx_n_s_Histo1D_yMin;
  PyObject *__pyx_n_s_Histo1D_yMins;
  PyObject *__pyx_n_s_Histo1D_yVals;
  PyObject *__pyx_n_s_Histo2D;
  PyObject *__pyx_n_s_Histo2D___init2;
  PyObject *__pyx_n_s_Histo2D___init4;
  PyObject *__pyx_n_s_Histo2D___init8;
  PyObject *__pyx_n_s_Histo2D___reduce_cython;
  PyObject *__pyx_n_s_Histo2D___setstate_cython;
  PyObject *__pyx_n_s_Histo2D__init2;
  PyObject *__pyx_n_s_Histo2D__init4;
  PyObject *__pyx_n_s_Histo2D__init8;
  PyObject *__pyx_n_s_Histo2D__mknp;
  PyObject *__pyx_n_s_Histo2D_addBin;
  PyObject *__pyx_n_s_Histo2D_addBins;
  PyObject *__pyx_n_s_Histo2D_bin;
  PyObject *__pyx_n_s_Histo2D_binAt;
  PyObject *__pyx_n_s_Histo2D_binIndexAt;
  PyObject *__pyx_n_s_Histo2D_bins;
  PyObject *__pyx_n_s_Histo2D_clone;
  PyObject *__pyx_n_s_Histo2D_divideBy;
  PyObject *__pyx_n_s_Histo2D_effNumEntries;
  PyObject *__pyx_n_s_Histo2D_fill;
  PyObject *__pyx_n_s_Histo2D_fillBin;
  PyObject *__pyx_n_s_Histo2D_heightErrs;
  PyObject *__pyx_n_s_Histo2D_heights;
  PyObject *__pyx_n_s_Histo2D_integral;
  PyObject *__pyx_n_s_Histo2D_mkScatter;
  PyObject *__pyx_n_s_Histo2D_normalize;
  PyObject *__pyx_n_s_Histo2D_numBins;
  PyObject *__pyx_n_s_Histo2D_numBinsX;
  PyObject *__pyx_n_s_Histo2D_numBinsY;
  PyObject *__pyx_n_s_Histo2D_numEntries;
  PyObject *__pyx_n_s_Histo2D_relErrs;
  PyObject *__pyx_n_s_Histo2D_reset;
  PyObject *__pyx_n_s_Histo2D_scaleW;
  PyObject *__pyx_n_s_Histo2D_sumW;
  PyObject *__pyx_n_s_Histo2D_sumW2;
  PyObject *__pyx_n_s_Histo2D_sumWs;
  PyObject *__pyx_n_s_Histo2D_totalDbn;
  PyObject *__pyx_n_s_Histo2D_volumeErrs;
  PyObject *__pyx_n_s_Histo2D_volumes;
  PyObject *__pyx_n_s_Histo2D_xEdges;
  PyObject *__pyx_n_s_Histo2D_xErrs;
  PyObject *__pyx_n_s_Histo2D_xFoci;
  PyObject *__pyx_n_s_Histo2D_xMax;
  PyObject *__pyx_n_s_Histo2D_xMaxs;
  PyObject *__pyx_n_s_Histo2D_xMean;
  PyObject *__pyx_n_s_Histo2D_xMids;
  PyObject *__pyx_n_s_Histo2D_xMin;
  PyObject *__pyx_n_s_Histo2D_xMins;
  PyObject *__pyx_n_s_Histo2D_xRMS;
  PyObject *__pyx_n_s_Histo2D_xStdDev;
  PyObject *__pyx_n_s_Histo2D_xStdErr;
  PyObject *__pyx_n_s_Histo2D_xVals;
  PyObject *__pyx_n_s_Histo2D_xVariance;
  PyObject *__pyx_n_s_Histo2D_xWidths;
  PyObject *__pyx_n_s_Histo2D_xyMean;
  PyObject *__pyx_n_s_Histo2D_xyRMS;
  PyObject *__pyx_n_s_Histo2D_xyStdDev;
  PyObject *__pyx_n_s_Histo2D_xyStdErr;
  PyObject *__pyx_n_s_Histo2D_xyVariance;
  PyObject *__pyx_n_s_Histo2D_yEdges;
  PyObject *__pyx_n_s_Histo2D_yErrs;
  PyObject *__pyx_n_s_Histo2D_yFoci;
  PyObject *__pyx_n_s_Histo2D_yMax;
  PyObject *__pyx_n_s_Histo2D_yMaxs;
  PyObject *__pyx_n_s_Histo2D_yMean;
  PyObject *__pyx_n_s_Histo2D_yMids;
  PyObject *__pyx_n_s_Histo2D_yMin;
  PyObject *__pyx_n_s_Histo2D_yMins;
  PyObject *__pyx_n_s_Histo2D_yRMS;
  PyObject *__pyx_n_s_Histo2D_yStdDev;
  PyObject *__pyx_n_s_Histo2D_yStdErr;
  PyObject *__pyx_n_s_Histo2D_yVals;
  PyObject *__pyx_n_s_Histo2D_yVariance;
  PyObject *__pyx_n_s_Histo2D_yWidths;
  PyObject *__pyx_n_s_Histo2D_zErrs;
  PyObject *__pyx_n_s_Histo2D_zMax;
  PyObject *__pyx_n_s_Histo2D_zMaxs;
  PyObject *__pyx_n_s_Histo2D_zMin;
  PyObject *__pyx_n_s_Histo2D_zMins;
  PyObject *__pyx_n_s_Histo2D_zVals;
  PyObject *__pyx_n_s_HistoBin1D;
  PyObject *__pyx_n_s_HistoBin1D___reduce_cython;
  PyObject *__pyx_n_s_HistoBin1D___setstate_cython;
  PyObject *__pyx_n_s_HistoBin1D_area;
  PyObject *__pyx_n_s_HistoBin1D_areaErr;
  PyObject *__pyx_kp_s_HistoBin1D_g_g_sumw_g;
  PyObject *__pyx_n_s_HistoBin1D_height;
  PyObject *__pyx_n_s_HistoBin1D_heightErr;
  PyObject *__pyx_n_s_HistoBin1D_relErr;
  PyObject *__pyx_n_s_HistoBin2D;
  PyObject *__pyx_n_s_HistoBin2D___reduce_cython;
  PyObject *__pyx_n_s_HistoBin2D___setstate_cython;
  PyObject *__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g;
  PyObject *__pyx_n_s_HistoBin2D_height;
  PyObject *__pyx_n_s_HistoBin2D_heightErr;
  PyObject *__pyx_n_s_HistoBin2D_relErr;
  PyObject *__pyx_n_s_HistoBin2D_volume;
  PyObject *__pyx_n_s_HistoBin2D_volumeErr;
  PyObject *__pyx_n_s_ImportError;
  PyObject *__pyx_n_s_Index;
  PyObject *__pyx_n_s_IndexError;
  PyObject *__pyx_n_s_Index___init;
  PyObject *__pyx_n_s_Index___repr;
  PyObject *__pyx_kp_s_Index_of_a_file;
  PyObject *__pyx_n_s_Index_toDict;
  PyObject *__pyx_n_s_MemoryError;
  PyObject *__pyx_kp_s_Null_pointer_referenced_perhaps;
  PyObject *__pyx_n_s_OrderedDict;
  PyObject *__pyx_n_s_P1D;
  PyObject *__pyx_n_s_P2D;
  PyObject *__pyx_n_s_Point;
  PyObject *__pyx_n_s_Point1D;
  PyObject *__pyx_n_s_Point1D___reduce_cython;
  PyObject *__pyx_n_s_Point1D___setstate_cython;
  PyObject *__pyx_n_s_Point1D_copy;
  PyObject *__pyx_n_s_Point1D_scaleX;
  PyObject *__pyx_n_s_Point1D_setX;
  PyObject *__pyx_n_s_Point1D_setXErrs;
  PyObject *__pyx_n_s_Point1D_setYErrs;
  PyObject *__pyx_n_s_Point1D_x;
  PyObject *__pyx_n_s_Point1D_xErrAvg;
  PyObject *__pyx_n_s_Point1D_xErrs;
  PyObject *__pyx_n_s_Point1D_xErrsFromSource;
  PyObject *__pyx_n_s_Point1D_xMax;
  PyObject *__pyx_n_s_Point1D_xMin;
  PyObject *__pyx_kp_s_Point1D_x_g;
  PyObject *__pyx_n_s_Point2D;
  PyObject *__pyx_n_s_Point2D___reduce_cython;
  PyObject *__pyx_n_s_Point2D___setstate_cython;
  PyObject *__pyx_n_s_Point2D_copy;
  PyObject *__pyx_n_s_Point2D_scale;
  PyObject *__pyx_n_s_Point2D_scaleX;
  PyObject *__pyx_n_s_Point2D_scaleXY;
  PyObject *__pyx_n_s_Point2D_scaleY;
  PyObject *__pyx_n_s_Point2D_setX;
  PyObject *__pyx_n_s_Point2D_setXErrs;
  PyObject *__pyx_n_s_Point2D_setY;
  PyObject *__pyx_n_s_Point2D_setYErrs;
  PyObject *__pyx_n_s_Point2D_x;
  PyObject *__pyx_n_s_Point2D_xErrAvg;
  PyObject *__pyx_n_s_Point2D_xErrs;
  PyObject *__pyx_n_s_Point2D_xMax;
  PyObject *__pyx_n_s_Point2D_xMin;
  PyObject *__pyx_kp_s_Point2D_x_g_y_g;
  PyObject *__pyx_n_s_Point2D_y;
  PyObject *__pyx_n_s_Point2D_yErrAvg;
  PyObject *__pyx_n_s_Point2D_yErrs;
  PyObject *__pyx_n_s_Point2D_yErrsFromSource;
  PyObject *__pyx_n_s_Point2D_yMax;
  PyObject *__pyx_n_s_Point2D_yMin;
  PyObject *__pyx_n_s_Point3D;
  PyObject *__pyx_n_s_Point3D___reduce_cython;
  PyObject *__pyx_n_s_Point3D___setstate_cython;
  PyObject *__pyx_n_s_Point3D_copy;
  PyObject *__pyx_n_s_Point3D_scaleX;
  PyObject *__pyx_n_s_Point3D_scaleXYZ;
  PyObject *__pyx_n_s_Point3D_scaleY;
  PyObject *__pyx_n_s_Point3D_scaleZ;
  PyObject *__pyx_n_s_Point3D_setX;
  PyObject *__pyx_n_s_Point3D_setXErrs;
  PyObject *__pyx_n_s_Point3D_setY;
  PyObject *__pyx_n_s_Point3D_setYErrs;
  PyObject *__pyx_n_s_Point3D_setZ;
  PyObject *__pyx_n_s_Point3D_setZErrs;
  PyObject *__pyx_n_s_Point3D_x;
  PyObject *__pyx_n_s_Point3D_xErrAvg;
  PyObject *__pyx_n_s_Point3D_xErrs;
  PyObject *__pyx_n_s_Point3D_xMax;
  PyObject *__pyx_n_s_Point3D_xMin;
  PyObject *__pyx_kp_s_Point3D_x_g_y_g_z_g;
  PyObject *__pyx_n_s_Point3D_y;
  PyObject *__pyx_n_s_Point3D_yErrAvg;
  PyObject *__pyx_n_s_Point3D_yErrs;
  PyObject *__pyx_n_s_Point3D_yMax;
  PyObject *__pyx_n_s_Point3D_yMin;
  PyObject *__pyx_n_s_Point3D_z;
  PyObject *__pyx_n_s_Point3D_zErrAvg;
  PyObject *__pyx_n_s_Point3D_zErrs;
  PyObject *__pyx_n_s_Point3D_zErrsFromSource;
  PyObject *__pyx_n_s_Point3D_zMax;
  PyObject *__pyx_n_s_Point3D_zMin;
  PyObject *__pyx_n_s_Point___reduce_cython;
  PyObject *__pyx_n_s_Point___setstate_cython;
  PyObject *__pyx_n_s_Point_dim;
  PyObject *__pyx_n_s_Point_errAvg;
  PyObject *__pyx_n_s_Point_errMap;
  PyObject *__pyx_n_s_Point_errMinus;
  PyObject *__pyx_n_s_Point_errPlus;
  PyObject *__pyx_n_s_Point_errs;
  PyObject *__pyx_n_s_Point_rmVariations;
  PyObject *__pyx_n_s_Point_scale;
  PyObject *__pyx_n_s_Point_set;
  PyObject *__pyx_n_s_Point_setErr;
  PyObject *__pyx_n_s_Point_setErrMinus;
  PyObject *__pyx_n_s_Point_setErrPlus;
  PyObject *__pyx_n_s_Point_setErrs;
  PyObject *__pyx_n_s_Point_setVal;
  PyObject *__pyx_n_s_Point_val;
  PyObject *__pyx_n_s_Profile1D;
  PyObject *__pyx_n_s_Profile1D___init2;
  PyObject *__pyx_n_s_Profile1D___init3;
  PyObject *__pyx_n_s_Profile1D___init5;
  PyObject *__pyx_n_s_Profile1D___reduce_cython;
  PyObject *__pyx_n_s_Profile1D___setstate_cython;
  PyObject *__pyx_n_s_Profile1D__init2;
  PyObject *__pyx_n_s_Profile1D__init3;
  PyObject *__pyx_n_s_Profile1D__init3_locals_genexpr;
  PyObject *__pyx_n_s_Profile1D__init5;
  PyObject *__pyx_n_s_Profile1D__mknp;
  PyObject *__pyx_n_s_Profile1D_addBin;
  PyObject *__pyx_n_s_Profile1D_addBins;
  PyObject *__pyx_n_s_Profile1D_bin;
  PyObject *__pyx_n_s_Profile1D_binAt;
  PyObject *__pyx_n_s_Profile1D_binIndexAt;
  PyObject *__pyx_n_s_Profile1D_bins;
  PyObject *__pyx_n_s_Profile1D_clone;
  PyObject *__pyx_n_s_Profile1D_divideBy;
  PyObject *__pyx_n_s_Profile1D_effNumEntries;
  PyObject *__pyx_n_s_Profile1D_fill;
  PyObject *__pyx_n_s_Profile1D_fillBin;
  PyObject *__pyx_n_s_Profile1D_mergeBins;
  PyObject *__pyx_n_s_Profile1D_mkScatter;
  PyObject *__pyx_n_s_Profile1D_numBins;
  PyObject *__pyx_n_s_Profile1D_numBinsX;
  PyObject *__pyx_n_s_Profile1D_numEntries;
  PyObject *__pyx_n_s_Profile1D_overflow;
  PyObject *__pyx_n_s_Profile1D_rebin;
  PyObject *__pyx_n_s_Profile1D_rebinBy;
  PyObject *__pyx_n_s_Profile1D_rebinTo;
  PyObject *__pyx_n_s_Profile1D_reset;
  PyObject *__pyx_n_s_Profile1D_scaleW;
  PyObject *__pyx_n_s_Profile1D_scaleY;
  PyObject *__pyx_n_s_Profile1D_sumW;
  PyObject *__pyx_n_s_Profile1D_sumW2;
  PyObject *__pyx_n_s_Profile1D_sumWs;
  PyObject *__pyx_n_s_Profile1D_totalDbn;
  PyObject *__pyx_n_s_Profile1D_underflow;
  PyObject *__pyx_n_s_Profile1D_xEdges;
  PyObject *__pyx_n_s_Profile1D_xErrs;
  PyObject *__pyx_n_s_Profile1D_xFoci;
  PyObject *__pyx_n_s_Profile1D_xMax;
  PyObject *__pyx_n_s_Profile1D_xMaxs;
  PyObject *__pyx_n_s_Profile1D_xMean;
  PyObject *__pyx_n_s_Profile1D_xMids;
  PyObject *__pyx_n_s_Profile1D_xMin;
  PyObject *__pyx_n_s_Profile1D_xMins;
  PyObject *__pyx_n_s_Profile1D_xRMS;
  PyObject *__pyx_n_s_Profile1D_xStdDev;
  PyObject *__pyx_n_s_Profile1D_xStdErr;
  PyObject *__pyx_n_s_Profile1D_xVals;
  PyObject *__pyx_n_s_Profile1D_xVariance;
  PyObject *__pyx_n_s_Profile1D_xWidths;
  PyObject *__pyx_n_s_Profile1D_yErrs;
  PyObject *__pyx_n_s_Profile1D_yMax;
  PyObject *__pyx_n_s_Profile1D_yMaxs;
  PyObject *__pyx_n_s_Profile1D_yMeans;
  PyObject *__pyx_n_s_Profile1D_yMin;
  PyObject *__pyx_n_s_Profile1D_yMins;
  PyObject *__pyx_n_s_Profile1D_yStdDevs;
  PyObject *__pyx_n_s_Profile1D_yStdErrs;
  PyObject *__pyx_n_s_Profile1D_yVals;
  PyObject *__pyx_n_s_Profile2D;
  PyObject *__pyx_n_s_Profile2D___init2;
  PyObject *__pyx_n_s_Profile2D___init4;
  PyObject *__pyx_n_s_Profile2D___init8;
  PyObject *__pyx_n_s_Profile2D___reduce_cython;
  PyObject *__pyx_n_s_Profile2D___setstate_cython;
  PyObject *__pyx_n_s_Profile2D__init2;
  PyObject *__pyx_n_s_Profile2D__init4;
  PyObject *__pyx_n_s_Profile2D__init8;
  PyObject *__pyx_n_s_Profile2D__mknp;
  PyObject *__pyx_n_s_Profile2D_addBin;
  PyObject *__pyx_n_s_Profile2D_addBins;
  PyObject *__pyx_n_s_Profile2D_bin;
  PyObject *__pyx_n_s_Profile2D_binAt;
  PyObject *__pyx_n_s_Profile2D_binIndexAt;
  PyObject *__pyx_n_s_Profile2D_bins;
  PyObject *__pyx_n_s_Profile2D_clone;
  PyObject *__pyx_n_s_Profile2D_divideBy;
  PyObject *__pyx_n_s_Profile2D_effNumEntries;
  PyObject *__pyx_n_s_Profile2D_fill;
  PyObject *__pyx_n_s_Profile2D_fillBin;
  PyObject *__pyx_n_s_Profile2D_mkScatter;
  PyObject *__pyx_n_s_Profile2D_numBins;
  PyObject *__pyx_n_s_Profile2D_numBinsX;
  PyObject *__pyx_n_s_Profile2D_numBinsY;
  PyObject *__pyx_n_s_Profile2D_numEntries;
  PyObject *__pyx_n_s_Profile2D_reset;
  PyObject *__pyx_n_s_Profile2D_scaleW;
  PyObject *__pyx_n_s_Profile2D_scaleZ;
  PyObject *__pyx_n_s_Profile2D_sumW;
  PyObject *__pyx_n_s_Profile2D_sumW2;
  PyObject *__pyx_n_s_Profile2D_sumWs;
  PyObject *__pyx_n_s_Profile2D_totalDbn;
  PyObject *__pyx_n_s_Profile2D_xEdges;
  PyObject *__pyx_n_s_Profile2D_xErrs;
  PyObject *__pyx_n_s_Profile2D_xFoci;
  PyObject *__pyx_n_s_Profile2D_xMax;
  PyObject *__pyx_n_s_Profile2D_xMaxs;
  PyObject *__pyx_n_s_Profile2D_xMean;
  PyObject *__pyx_n_s_Profile2D_xMids;
  PyObject *__pyx_n_s_Profile2D_xMin;
  PyObject *__pyx_n_s_Profile2D_xMins;
  PyObject *__pyx_n_s_Profile2D_xRMS;
  PyObject *__pyx_n_s_Profile2D_xStdDev;
  PyObject *__pyx_n_s_Profile2D_xStdErr;
  PyObject *__pyx_n_s_Profile2D_xVals;
  PyObject *__pyx_n_s_Profile2D_xVariance;
  PyObject *__pyx_n_s_Profile2D_xWidths;
  PyObject *__pyx_n_s_Profile2D_xyMean;
  PyObject *__pyx_n_s_Profile2D_xyRMS;
  PyObject *__pyx_n_s_Profile2D_xyStdDev;
  PyObject *__pyx_n_s_Profile2D_xyStdErr;
  PyObject *__pyx_n_s_Profile2D_xyVariance;
  PyObject *__pyx_n_s_Profile2D_yEdges;
  PyObject *__pyx_n_s_Profile2D_yErrs;
  PyObject *__pyx_n_s_Profile2D_yFoci;
  PyObject *__pyx_n_s_Profile2D_yMax;
  PyObject *__pyx_n_s_Profile2D_yMaxs;
  PyObject *__pyx_n_s_Profile2D_yMean;
  PyObject *__pyx_n_s_Profile2D_yMids;
  PyObject *__pyx_n_s_Profile2D_yMin;
  PyObject *__pyx_n_s_Profile2D_yMins;
  PyObject *__pyx_n_s_Profile2D_yRMS;
  PyObject *__pyx_n_s_Profile2D_yStdDev;
  PyObject *__pyx_n_s_Profile2D_yStdErr;
  PyObject *__pyx_n_s_Profile2D_yVals;
  PyObject *__pyx_n_s_Profile2D_yVariance;
  PyObject *__pyx_n_s_Profile2D_yWidths;
  PyObject *__pyx_n_s_Profile2D_zErrs;
  PyObject *__pyx_n_s_Profile2D_zMax;
  PyObject *__pyx_n_s_Profile2D_zMaxs;
  PyObject *__pyx_n_s_Profile2D_zMeans;
  PyObject *__pyx_n_s_Profile2D_zMin;
  PyObject *__pyx_n_s_Profile2D_zMins;
  PyObject *__pyx_n_s_Profile2D_zStdDevs;
  PyObject *__pyx_n_s_Profile2D_zStdErrs;
  PyObject *__pyx_n_s_Profile2D_zVals;
  PyObject *__pyx_n_s_ProfileBin1D;
  PyObject *__pyx_n_s_ProfileBin1D___reduce_cython;
  PyObject *__pyx_n_s_ProfileBin1D___setstate_cython;
  PyObject *__pyx_kp_s_ProfileBin1D_g_g_sumw_g;
  PyObject *__pyx_n_s_ProfileBin1D_mean;
  PyObject *__pyx_n_s_ProfileBin1D_rms;
  PyObject *__pyx_n_s_ProfileBin1D_stdDev;
  PyObject *__pyx_n_s_ProfileBin1D_stdErr;
  PyObject *__pyx_n_s_ProfileBin1D_sumWY;
  PyObject *__pyx_n_s_ProfileBin1D_sumWY2;
  PyObject *__pyx_n_s_ProfileBin1D_variance;
  PyObject *__pyx_n_s_ProfileBin2D;
  PyObject *__pyx_n_s_ProfileBin2D___reduce_cython;
  PyObject *__pyx_n_s_ProfileBin2D___setstate_cython;
  PyObject *__pyx_kp_s_ProfileBin2D_g_g_g_g;
  PyObject *__pyx_n_s_ProfileBin2D_mean;
  PyObject *__pyx_n_s_ProfileBin2D_rms;
  PyObject *__pyx_n_s_ProfileBin2D_stdDev;
  PyObject *__pyx_n_s_ProfileBin2D_stdErr;
  PyObject *__pyx_n_s_ProfileBin2D_sumWZ;
  PyObject *__pyx_n_s_ProfileBin2D_sumWZ2;
  PyObject *__pyx_n_s_ProfileBin2D_variance;
  PyObject *__pyx_n_s_RuntimeError;
  PyObject *__pyx_n_s_S1D;
  PyObject *__pyx_n_s_S2D;
  PyObject *__pyx_n_s_S3D;
  PyObject *__pyx_n_s_Scatter1D;
  PyObject *__pyx_n_s_Scatter1D___addPoint_explicit;
  PyObject *__pyx_n_s_Scatter1D___addPoint_point;
  PyObject *__pyx_n_s_Scatter1D___init_2;
  PyObject *__pyx_n_s_Scatter1D___init_3;
  PyObject *__pyx_n_s_Scatter1D___reduce_cython;
  PyObject *__pyx_n_s_Scatter1D___setstate_cython;
  PyObject *__pyx_n_s_Scatter1D__addPoint_explicit;
  PyObject *__pyx_n_s_Scatter1D__addPoint_point;
  PyObject *__pyx_n_s_Scatter1D__init_2;
  PyObject *__pyx_n_s_Scatter1D__init_3;
  PyObject *__pyx_n_s_Scatter1D__mknp;
  PyObject *__pyx_n_s_Scatter1D_addPoint;
  PyObject *__pyx_n_s_Scatter1D_addPoints;
  PyObject *__pyx_n_s_Scatter1D_clone;
  PyObject *__pyx_n_s_Scatter1D_combineWith;
  PyObject *__pyx_n_s_Scatter1D_hasValidErrorBreakdown;
  PyObject *__pyx_n_s_Scatter1D_mkScatter;
  PyObject *__pyx_n_s_Scatter1D_numPoints;
  PyObject *__pyx_n_s_Scatter1D_parseVariations;
  PyObject *__pyx_n_s_Scatter1D_point;
  PyObject *__pyx_n_s_Scatter1D_points;
  PyObject *__pyx_n_s_Scatter1D_reset;
  PyObject *__pyx_n_s_Scatter1D_rmPoint;
  PyObject *__pyx_n_s_Scatter1D_rmPoints;
  PyObject *__pyx_n_s_Scatter1D_rmVariations;
  PyObject *__pyx_n_s_Scatter1D_scale;
  PyObject *__pyx_n_s_Scatter1D_scaleX;
  PyObject *__pyx_n_s_Scatter1D_transformX;
  PyObject *__pyx_n_s_Scatter1D_updateTotalUncertainty;
  PyObject *__pyx_n_s_Scatter1D_variations;
  PyObject *__pyx_n_s_Scatter1D_writeVariationsToAnnot;
  PyObject *__pyx_n_s_Scatter1D_xMax;
  PyObject *__pyx_n_s_Scatter1D_xMaxs;
  PyObject *__pyx_n_s_Scatter1D_xMin;
  PyObject *__pyx_n_s_Scatter1D_xMins;
  PyObject *__pyx_n_s_Scatter1D_xVals;
  PyObject *__pyx_n_s_Scatter2D;
  PyObject *__pyx_n_s_Scatter2D___addPoint_explicit;
  PyObject *__pyx_n_s_Scatter2D___addPoint_point;
  PyObject *__pyx_n_s_Scatter2D___init_2;
  PyObject *__pyx_n_s_Scatter2D___init_3;
  PyObject *__pyx_n_s_Scatter2D___reduce_cython;
  PyObject *__pyx_n_s_Scatter2D___setstate_cython;
  PyObject *__pyx_n_s_Scatter2D__addPoint_explicit;
  PyObject *__pyx_n_s_Scatter2D__addPoint_point;
  PyObject *__pyx_n_s_Scatter2D__init_2;
  PyObject *__pyx_n_s_Scatter2D__init_3;
  PyObject *__pyx_n_s_Scatter2D__mknp;
  PyObject *__pyx_n_s_Scatter2D_addPoint;
  PyObject *__pyx_n_s_Scatter2D_addPoints;
  PyObject *__pyx_n_s_Scatter2D_clone;
  PyObject *__pyx_n_s_Scatter2D_combineWith;
  PyObject *__pyx_n_s_Scatter2D_correlationMatrix;
  PyObject *__pyx_n_s_Scatter2D_covarianceMatrix;
  PyObject *__pyx_n_s_Scatter2D_hasValidErrorBreakdown;
  PyObject *__pyx_n_s_Scatter2D_mkScatter;
  PyObject *__pyx_n_s_Scatter2D_numPoints;
  PyObject *__pyx_n_s_Scatter2D_parseVariations;
  PyObject *__pyx_n_s_Scatter2D_point;
  PyObject *__pyx_n_s_Scatter2D_points;
  PyObject *__pyx_n_s_Scatter2D_reset;
  PyObject *__pyx_n_s_Scatter2D_rmPoint;
  PyObject *__pyx_n_s_Scatter2D_rmPoints;
  PyObject *__pyx_n_s_Scatter2D_rmVariations;
  PyObject *__pyx_n_s_Scatter2D_scale;
  PyObject *__pyx_n_s_Scatter2D_scaleX;
  PyObject *__pyx_n_s_Scatter2D_scaleXY;
  PyObject *__pyx_n_s_Scatter2D_scaleY;
  PyObject *__pyx_n_s_Scatter2D_transformX;
  PyObject *__pyx_n_s_Scatter2D_transformY;
  PyObject *__pyx_n_s_Scatter2D_updateTotalUncertainty;
  PyObject *__pyx_n_s_Scatter2D_variations;
  PyObject *__pyx_n_s_Scatter2D_writeVariationsToAnnot;
  PyObject *__pyx_n_s_Scatter2D_xErrAvgs;
  PyObject *__pyx_n_s_Scatter2D_xErrs;
  PyObject *__pyx_n_s_Scatter2D_xMax;
  PyObject *__pyx_n_s_Scatter2D_xMaxs;
  PyObject *__pyx_n_s_Scatter2D_xMin;
  PyObject *__pyx_n_s_Scatter2D_xMins;
  PyObject *__pyx_n_s_Scatter2D_xVals;
  PyObject *__pyx_n_s_Scatter2D_yErrAvgs;
  PyObject *__pyx_n_s_Scatter2D_yErrs;
  PyObject *__pyx_n_s_Scatter2D_yMax;
  PyObject *__pyx_n_s_Scatter2D_yMaxs;
  PyObject *__pyx_n_s_Scatter2D_yMin;
  PyObject *__pyx_n_s_Scatter2D_yMins;
  PyObject *__pyx_n_s_Scatter2D_yVals;
  PyObject *__pyx_n_s_Scatter3D;
  PyObject *__pyx_n_s_Scatter3D___addPoint_explicit;
  PyObject *__pyx_n_s_Scatter3D___addPoint_point;
  PyObject *__pyx_n_s_Scatter3D___init_2;
  PyObject *__pyx_n_s_Scatter3D___init_3;
  PyObject *__pyx_n_s_Scatter3D___reduce_cython;
  PyObject *__pyx_n_s_Scatter3D___setstate_cython;
  PyObject *__pyx_n_s_Scatter3D__addPoint_explicit;
  PyObject *__pyx_n_s_Scatter3D__addPoint_point;
  PyObject *__pyx_n_s_Scatter3D__init_2;
  PyObject *__pyx_n_s_Scatter3D__init_3;
  PyObject *__pyx_n_s_Scatter3D__mknp;
  PyObject *__pyx_n_s_Scatter3D_addPoint;
  PyObject *__pyx_n_s_Scatter3D_addPoints;
  PyObject *__pyx_n_s_Scatter3D_clone;
  PyObject *__pyx_n_s_Scatter3D_combineWith;
  PyObject *__pyx_n_s_Scatter3D_covarianceMatrix;
  PyObject *__pyx_n_s_Scatter3D_hasValidErrorBreakdown;
  PyObject *__pyx_n_s_Scatter3D_mkScatter;
  PyObject *__pyx_n_s_Scatter3D_numPoints;
  PyObject *__pyx_n_s_Scatter3D_point;
  PyObject *__pyx_n_s_Scatter3D_points;
  PyObject *__pyx_n_s_Scatter3D_reset;
  PyObject *__pyx_n_s_Scatter3D_rmPoint;
  PyObject *__pyx_n_s_Scatter3D_rmPoints;
  PyObject *__pyx_n_s_Scatter3D_rmVariations;
  PyObject *__pyx_n_s_Scatter3D_scale;
  PyObject *__pyx_n_s_Scatter3D_scaleX;
  PyObject *__pyx_n_s_Scatter3D_scaleXYZ;
  PyObject *__pyx_n_s_Scatter3D_scaleY;
  PyObject *__pyx_n_s_Scatter3D_scaleZ;
  PyObject *__pyx_n_s_Scatter3D_transformX;
  PyObject *__pyx_n_s_Scatter3D_transformY;
  PyObject *__pyx_n_s_Scatter3D_transformZ;
  PyObject *__pyx_n_s_Scatter3D_updateTotalUncertainty;
  PyObject *__pyx_n_s_Scatter3D_variations;
  PyObject *__pyx_n_s_Scatter3D_writeVariationsToAnnot;
  PyObject *__pyx_n_s_Scatter3D_xErrs;
  PyObject *__pyx_n_s_Scatter3D_xMax;
  PyObject *__pyx_n_s_Scatter3D_xMaxs;
  PyObject *__pyx_n_s_Scatter3D_xMin;
  PyObject *__pyx_n_s_Scatter3D_xMins;
  PyObject *__pyx_n_s_Scatter3D_xVals;
  PyObject *__pyx_n_s_Scatter3D_yErrs;
  PyObject *__pyx_n_s_Scatter3D_yMax;
  PyObject *__pyx_n_s_Scatter3D_yMaxs;
  PyObject *__pyx_n_s_Scatter3D_yMin;
  PyObject *__pyx_n_s_Scatter3D_yMins;
  PyObject *__pyx_n_s_Scatter3D_yVals;
  PyObject *__pyx_n_s_Scatter3D_zErrs;
  PyObject *__pyx_n_s_Scatter3D_zMax;
  PyObject *__pyx_n_s_Scatter3D_zMaxs;
  PyObject *__pyx_n_s_Scatter3D_zMin;
  PyObject *__pyx_n_s_Scatter3D_zMins;
  PyObject *__pyx_n_s_Scatter3D_zVals;
  PyObject *__pyx_n_s_StringIO;
  PyObject *__pyx_n_s_TypeError;
  PyObject *__pyx_kp_s_Unsupported_bin_of_type;
  PyObject *__pyx_n_s_ValueError;
  PyObject *__pyx_n_s_XY;
  PyObject *__pyx_n_s_XYZ;
  PyObject *__pyx_kp_s__11;
  PyObject *__pyx_kp_b__2;
  PyObject *__pyx_kp_s__2;
  PyObject *__pyx_kp_u__3;
  PyObject *__pyx_n_s__4;
  PyObject *__pyx_kp_s__8;
  PyObject *__pyx_n_s__977;
  PyObject *__pyx_n_s_a;
  PyObject *__pyx_n_s_addBin;
  PyObject *__pyx_n_s_addBins;
  PyObject *__pyx_n_s_addBins_bins;
  PyObject *__pyx_n_s_addBins_edges;
  PyObject *__pyx_n_s_addBins_points;
  PyObject *__pyx_n_s_addBins_tuples;
  PyObject *__pyx_n_s_addPoint;
  PyObject *__pyx_n_s_addPoint_explicit;
  PyObject *__pyx_n_s_addPoint_point;
  PyObject *__pyx_n_s_addPoints;
  PyObject *__pyx_n_s_addressof;
  PyObject *__pyx_n_s_adjacentTo;
  PyObject *__pyx_n_s_ana_objs;
  PyObject *__pyx_n_s_annotation;
  PyObject *__pyx_n_s_annotations;
  PyObject *__pyx_n_s_annotationsDict;
  PyObject *__pyx_n_s_annotationsDict_locals_genexpr;
  PyObject *__pyx_n_s_ao;
  PyObject *__pyx_n_s_ao1;
  PyObject *__pyx_n_s_ao2;
  PyObject *__pyx_n_s_aobjects;
  PyObject *__pyx_n_s_aolist;
  PyObject *__pyx_n_s_area;
  PyObject *__pyx_n_s_areaErr;
  PyObject *__pyx_n_s_areaErrs;
  PyObject *__pyx_n_s_areas;
  PyObject *__pyx_n_s_arg;
  PyObject *__pyx_n_s_args;
  PyObject *__pyx_n_s_array;
  PyObject *__pyx_n_s_asdict;
  PyObject *__pyx_n_s_asgrid;
  PyObject *__pyx_n_s_asum;
  PyObject *__pyx_n_s_asymm;
  PyObject *__pyx_n_s_asyncio_coroutines;
  PyObject *__pyx_n_s_attrgetter;
  PyObject *__pyx_n_s_autostr;
  PyObject *__pyx_n_s_ax;
  PyObject *__pyx_n_s_ay;
  PyObject *__pyx_n_s_az;
  PyObject *__pyx_n_s_b;
  PyObject *__pyx_n_s_begin;
  PyObject *__pyx_n_s_bin;
  PyObject *__pyx_n_s_binAt;
  PyObject *__pyx_n_s_binErrs;
  PyObject *__pyx_n_s_binIndexAt;
  PyObject *__pyx_n_s_binTotal;
  PyObject *__pyx_n_s_binareadiv;
  PyObject *__pyx_n_s_binedges;
  PyObject *__pyx_n_s_bins;
  PyObject *__pyx_n_s_bins_or_edges;
  PyObject *__pyx_n_s_binwidthdiv;
  PyObject *__pyx_n_s_buffer;
  PyObject *__pyx_n_s_bytestr_from_file;
  PyObject *__pyx_n_s_cStringIO;
  PyObject *__pyx_n_s_c_double;
  PyObject *__pyx_n_s_callback;
  PyObject *__pyx_n_s_cbin;
  PyObject *__pyx_n_s_cbins;
  PyObject *__pyx_n_s_cedges;
  PyObject *__pyx_n_s_class;
  PyObject *__pyx_n_s_class_getitem;
  PyObject *__pyx_n_s_clearAnnotations;
  PyObject *__pyx_n_s_cline_in_traceback;
  PyObject *__pyx_n_s_clone;
  PyObject *__pyx_n_s_close;
  PyObject *__pyx_n_s_collections;
  PyObject *__pyx_n_s_combineWith;
  PyObject *__pyx_n_s_compile;
  PyObject *__pyx_n_s_copy;
  PyObject *__pyx_kp_s_core_pyx;
  PyObject *__pyx_n_s_corr;
  PyObject *__pyx_n_s_correlation;
  PyObject *__pyx_n_s_correlationMatrix;
  PyObject *__pyx_n_s_counter;
  PyObject *__pyx_n_s_covMatrix;
  PyObject *__pyx_n_s_covariance;
  PyObject *__pyx_n_s_covarianceMatrix;
  PyObject *__pyx_n_s_ctypes;
  PyObject *__pyx_n_s_d;
  PyObject *__pyx_n_s_da;
  PyObject *__pyx_n_s_default;
  PyObject *__pyx_n_s_dict;
  PyObject *__pyx_n_s_dict_2;
  PyObject *__pyx_n_s_dim;
  PyObject *__pyx_kp_u_disable;
  PyObject *__pyx_n_s_divide;
  PyObject *__pyx_n_s_divideBy;
  PyObject *__pyx_n_s_doc;
  PyObject *__pyx_n_s_dump;
  PyObject *__pyx_n_s_dx;
  PyObject *__pyx_n_s_e;
  PyObject *__pyx_n_s_edge;
  PyObject *__pyx_n_s_edges;
  PyObject *__pyx_n_s_edges_or_bins;
  PyObject *__pyx_n_s_effNumEntries;
  PyObject *__pyx_n_s_efficiency;
  PyObject *__pyx_n_s_elem;
  PyObject *__pyx_kp_u_enable;
  PyObject *__pyx_n_s_encode;
  PyObject *__pyx_n_s_end;
  PyObject *__pyx_n_s_enter;
  PyObject *__pyx_n_s_err;
  PyObject *__pyx_n_s_errAvg;
  PyObject *__pyx_n_s_errMap;
  PyObject *__pyx_n_s_errMap_locals_genexpr;
  PyObject *__pyx_n_s_errMinus;
  PyObject *__pyx_n_s_errPlus;
  PyObject *__pyx_n_s_errW;
  PyObject *__pyx_n_s_err_map;
  PyObject *__pyx_n_s_errs;
  PyObject *__pyx_n_s_es;
  PyObject *__pyx_n_s_exit;
  PyObject *__pyx_n_s_f;
  PyObject *__pyx_n_s_file_or_filename;
  PyObject *__pyx_n_s_filename;
  PyObject *__pyx_n_s_fill;
  PyObject *__pyx_n_s_fillBin;
  PyObject *__pyx_n_s_fn;
  PyObject *__pyx_n_s_foci;
  PyObject *__pyx_n_s_format;
  PyObject *__pyx_n_s_fptr;
  PyObject *__pyx_n_s_fraction;
  PyObject *__pyx_kp_u_gc;
  PyObject *__pyx_n_s_genexpr;
  PyObject *__pyx_n_s_getDataPath;
  PyObject *__pyx_n_s_getLibPath;
  PyObject *__pyx_n_s_getYodaDataPath;
  PyObject *__pyx_n_s_getstate;
  PyObject *__pyx_n_s_h;
  PyObject *__pyx_n_s_h_binsizediv;
  PyObject *__pyx_n_s_hasAnnotation;
  PyObject *__pyx_n_s_hasValidErrorBreakdown;
  PyObject *__pyx_n_s_height;
  PyObject *__pyx_n_s_heightErr;
  PyObject *__pyx_n_s_heightErrs;
  PyObject *__pyx_n_s_heights;
  PyObject *__pyx_n_s_high;
  PyObject *__pyx_n_s_i;
  PyObject *__pyx_n_s_ia;
  PyObject *__pyx_n_s_ib;
  PyObject *__pyx_n_s_idx;
  PyObject *__pyx_n_s_idxs;
  PyObject *__pyx_n_s_ignoreOffDiagonalTerms;
  PyObject *__pyx_n_s_import;
  PyObject *__pyx_kp_s_include_AnalysisObject_pyx;
  PyObject *__pyx_kp_s_include_Bin_pyx;
  PyObject *__pyx_kp_s_include_Counter_pyx;
  PyObject *__pyx_kp_s_include_Dbn0D_pyx;
  PyObject *__pyx_kp_s_include_Dbn1D_pyx;
  PyObject *__pyx_kp_s_include_Dbn2D_pyx;
  PyObject *__pyx_kp_s_include_Dbn3D_pyx;
  PyObject *__pyx_kp_s_include_Functions_pyx;
  PyObject *__pyx_kp_s_include_Histo1D_pyx;
  PyObject *__pyx_kp_s_include_Histo2D_pyx;
  PyObject *__pyx_kp_s_include_HistoBin1D_pyx;
  PyObject *__pyx_kp_s_include_HistoBin2D_pyx;
  PyObject *__pyx_kp_s_include_IO_pyx;
  PyObject *__pyx_kp_s_include_Point1D_pyx;
  PyObject *__pyx_kp_s_include_Point2D_pyx;
  PyObject *__pyx_kp_s_include_Point3D_pyx;
  PyObject *__pyx_kp_s_include_Point_pyx;
  PyObject *__pyx_kp_s_include_Profile1D_pyx;
  PyObject *__pyx_kp_s_include_Profile2D_pyx;
  PyObject *__pyx_kp_s_include_ProfileBin1D_pyx;
  PyObject *__pyx_kp_s_include_ProfileBin2D_pyx;
  PyObject *__pyx_kp_s_include_Scatter1D_pyx;
  PyObject *__pyx_kp_s_include_Scatter2D_pyx;
  PyObject *__pyx_kp_s_include_Scatter3D_pyx;
  PyObject *__pyx_kp_s_include_generated_Bin1D_Dbn1D_py;
  PyObject *__pyx_kp_s_include_generated_Bin1D_Dbn2D_py;
  PyObject *__pyx_kp_s_include_generated_Bin2D_Dbn2D_py;
  PyObject *__pyx_kp_s_include_generated_Bin2D_Dbn3D_py;
  PyObject *__pyx_n_s_includeoverflow;
  PyObject *__pyx_n_s_includeoverflows;
  PyObject *__pyx_n_s_includeunderflow;
  PyObject *__pyx_n_s_index_between;
  PyObject *__pyx_n_s_index_map;
  PyObject *__pyx_n_s_init;
  PyObject *__pyx_n_s_init2;
  PyObject *__pyx_n_s_init3;
  PyObject *__pyx_n_s_init4;
  PyObject *__pyx_n_s_init5;
  PyObject *__pyx_n_s_init8;
  PyObject *__pyx_n_s_init_2;
  PyObject *__pyx_n_s_init_3;
  PyObject *__pyx_n_s_init_subclass;
  PyObject *__pyx_n_s_initializing;
  PyObject *__pyx_n_s_integral;
  PyObject *__pyx_n_s_integralRange;
  PyObject *__pyx_n_s_integralTo;
  PyObject *__pyx_n_s_io;
  PyObject *__pyx_n_s_is_coroutine;
  PyObject *__pyx_kp_u_isenabled;
  PyObject *__pyx_n_s_iss;
  PyObject *__pyx_n_s_istxt;
  PyObject *__pyx_n_s_items;
  PyObject *__pyx_n_s_iter;
  PyObject *__pyx_n_s_iterable;
  PyObject *__pyx_n_s_iteritems;
  PyObject *__pyx_n_s_itertools;
  PyObject *__pyx_n_s_ix;
  PyObject *__pyx_n_s_j;
  PyObject *__pyx_n_s_k;
  PyObject *__pyx_n_s_key;
  PyObject *__pyx_n_s_kwargs;
  PyObject *__pyx_n_s_linspace;
  PyObject *__pyx_n_s_logspace;
  PyObject *__pyx_n_s_low;
  PyObject *__pyx_n_s_lower;
  PyObject *__pyx_n_s_main;
  PyObject *__pyx_n_s_max;
  PyObject *__pyx_n_s_mean;
  PyObject *__pyx_n_s_merge;
  PyObject *__pyx_n_s_mergeBins;
  PyObject *__pyx_n_s_metaclass;
  PyObject *__pyx_n_s_min;
  PyObject *__pyx_n_s_mkIndexYODA;
  PyObject *__pyx_n_s_mkScatter;
  PyObject *__pyx_n_s_mknp;
  PyObject *__pyx_n_s_mktxtifstr;
  PyObject *__pyx_n_s_module;
  PyObject *__pyx_n_s_n;
  PyObject *__pyx_kp_s_n_2;
  PyObject *__pyx_n_s_name;
  PyObject *__pyx_n_s_name_2;
  PyObject *__pyx_n_s_nbins;
  PyObject *__pyx_n_s_new;
  PyObject *__pyx_n_s_normalize;
  PyObject *__pyx_n_s_normto;
  PyObject *__pyx_n_s_nsample;
  PyObject *__pyx_n_s_numBins;
  PyObject *__pyx_n_s_numBinsX;
  PyObject *__pyx_n_s_numBinsY;
  PyObject *__pyx_n_s_numEntries;
  PyObject *__pyx_n_s_numPoints;
  PyObject *__pyx_n_s_numpy;
  PyObject *__pyx_n_s_nxbins;
  PyObject *__pyx_n_s_nybins;
  PyObject *__pyx_n_s_oflow_binwidth;
  PyObject *__pyx_n_s_open;
  PyObject *__pyx_n_s_operator;
  PyObject *__pyx_n_s_oss;
  PyObject *__pyx_n_s_other;
  PyObject *__pyx_n_s_others;
  PyObject *__pyx_n_s_overflow;
  PyObject *__pyx_n_s_p;
  PyObject *__pyx_n_s_p1ptr;
  PyObject *__pyx_n_s_p_usestddev;
  PyObject *__pyx_n_s_parseVariations;
  PyObject *__pyx_n_s_parseyaml;
  PyObject *__pyx_n_s_path;
  PyObject *__pyx_n_s_pattern_check;
  PyObject *__pyx_n_s_pattern_check_locals_genexpr;
  PyObject *__pyx_n_s_patterns;
  PyObject *__pyx_n_s_pdfspace;
  PyObject *__pyx_n_s_point;
  PyObject *__pyx_n_s_points;
  PyObject *__pyx_n_s_precision;
  PyObject *__pyx_n_s_prepare;
  PyObject *__pyx_n_s_pyx_state;
  PyObject *__pyx_n_s_pyx_vtable;
  PyObject *__pyx_n_s_qualname;
  PyObject *__pyx_n_s_range;
  PyObject *__pyx_n_s_rb;
  PyObject *__pyx_n_s_re;
  PyObject *__pyx_n_s_read;
  PyObject *__pyx_n_s_readAIDA;
  PyObject *__pyx_n_s_readFLAT;
  PyObject *__pyx_n_s_readYODA;
  PyObject *__pyx_n_s_read_error_pair;
  PyObject *__pyx_n_s_read_symmetric;
  PyObject *__pyx_n_s_rebin;
  PyObject *__pyx_n_s_rebinBy;
  PyObject *__pyx_n_s_rebinTo;
  PyObject *__pyx_n_s_reduce;
  PyObject *__pyx_n_s_reduce_cython;
  PyObject *__pyx_n_s_reduce_ex;
  PyObject *__pyx_n_s_relErr;
  PyObject *__pyx_n_s_relErrW;
  PyObject *__pyx_n_s_relErrs;
  PyObject *__pyx_n_s_repeat;
  PyObject *__pyx_n_s_replace;
  PyObject *__pyx_n_s_repr;
  PyObject *__pyx_n_s_repr_string;
  PyObject *__pyx_n_s_reset;
  PyObject *__pyx_n_s_reshape;
  PyObject *__pyx_n_s_rmAnnotation;
  PyObject *__pyx_n_s_rmPoint;
  PyObject *__pyx_n_s_rmPoints;
  PyObject *__pyx_n_s_rmVariations;
  PyObject *__pyx_n_s_rms;
  PyObject *__pyx_n_s_row;
  PyObject *__pyx_n_s_rtn;
  PyObject *__pyx_n_s_s;
  PyObject *__pyx_n_s_s1;
  PyObject *__pyx_n_s_s2;
  PyObject *__pyx_n_s_s2ptr;
  PyObject *__pyx_n_s_s3;
  PyObject *__pyx_kp_s_s_s;
  PyObject *__pyx_kp_s_s_s_d_bins_sumw_0_2g;
  PyObject *__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s;
  PyObject *__pyx_kp_s_s_s_d_bins_sumw_2g;
  PyObject *__pyx_kp_s_s_s_d_points;
  PyObject *__pyx_kp_s_s_s_sumw_0_2g_err_s;
  PyObject *__pyx_kp_s_s_x_g_g;
  PyObject *__pyx_kp_s_s_x_g_g_y_g_g;
  PyObject *__pyx_n_s_sample;
  PyObject *__pyx_n_s_sample1;
  PyObject *__pyx_n_s_sample2;
  PyObject *__pyx_n_s_scale;
  PyObject *__pyx_n_s_scaleW;
  PyObject *__pyx_n_s_scaleX;
  PyObject *__pyx_n_s_scaleXY;
  PyObject *__pyx_n_s_scaleXYZ;
  PyObject *__pyx_n_s_scaleY;
  PyObject *__pyx_n_s_scaleZ;
  PyObject *__pyx_n_s_sd;
  PyObject *__pyx_n_s_search;
  PyObject *__pyx_n_s_seek;
  PyObject *__pyx_n_s_self;
  PyObject *__pyx_kp_s_self__ptr_cannot_be_converted_to;
  PyObject *__pyx_n_s_send;
  PyObject *__pyx_n_s_set;
  PyObject *__pyx_n_s_setAnnotation;
  PyObject *__pyx_n_s_setErr;
  PyObject *__pyx_n_s_setErrMinus;
  PyObject *__pyx_n_s_setErrPlus;
  PyObject *__pyx_n_s_setErrs;
  PyObject *__pyx_n_s_setPath;
  PyObject *__pyx_n_s_setTitle;
  PyObject *__pyx_n_s_setVal;
  PyObject *__pyx_n_s_setX;
  PyObject *__pyx_n_s_setXErrs;
  PyObject *__pyx_n_s_setY;
  PyObject *__pyx_n_s_setYErrs;
  PyObject *__pyx_n_s_setZ;
  PyObject *__pyx_n_s_setZErrs;
  PyObject *__pyx_n_s_set_name;
  PyObject *__pyx_n_s_setstate;
  PyObject *__pyx_n_s_setstate_cython;
  PyObject *__pyx_n_s_sigma_i;
  PyObject *__pyx_n_s_sigma_j;
  PyObject *__pyx_n_s_source;
  PyObject *__pyx_n_s_spec;
  PyObject *__pyx_n_s_stdDev;
  PyObject *__pyx_n_s_stdErr;
  PyObject *__pyx_n_s_stdin;
  PyObject *__pyx_n_s_stdout;
  PyObject *__pyx_n_s_str;
  PyObject *__pyx_n_s_str_to_file;
  PyObject *__pyx_kp_s_stringsource;
  PyObject *__pyx_n_s_strip;
  PyObject *__pyx_n_s_sum;
  PyObject *__pyx_n_s_sumW;
  PyObject *__pyx_n_s_sumW2;
  PyObject *__pyx_n_s_sumWX;
  PyObject *__pyx_n_s_sumWX2;
  PyObject *__pyx_n_s_sumWXY;
  PyObject *__pyx_n_s_sumWXZ;
  PyObject *__pyx_n_s_sumWY;
  PyObject *__pyx_n_s_sumWY2;
  PyObject *__pyx_n_s_sumWYZ;
  PyObject *__pyx_n_s_sumWZ;
  PyObject *__pyx_n_s_sumWZ2;
  PyObject *__pyx_n_s_sumWs;
  PyObject *__pyx_n_s_super;
  PyObject *__pyx_n_s_sys;
  PyObject *__pyx_n_s_test;
  PyObject *__pyx_n_s_throw;
  PyObject *__pyx_n_s_title;
  PyObject *__pyx_n_s_toDict;
  PyObject *__pyx_n_s_toIntegral;
  PyObject *__pyx_n_s_totalDbn;
  PyObject *__pyx_n_s_transformX;
  PyObject *__pyx_n_s_transformY;
  PyObject *__pyx_n_s_transformZ;
  PyObject *__pyx_n_s_try_loop;
  PyObject *__pyx_n_s_tuples;
  PyObject *__pyx_n_s_type;
  PyObject *__pyx_n_s_uflow_binwidth;
  PyObject *__pyx_n_s_underflow;
  PyObject *__pyx_n_s_unique;
  PyObject *__pyx_n_s_unpatterns;
  PyObject *__pyx_n_s_updateTotalUncertainty;
  PyObject *__pyx_n_s_upper;
  PyObject *__pyx_n_s_usefocus;
  PyObject *__pyx_n_s_usestddev;
  PyObject *__pyx_kp_s_utf_8;
  PyObject *__pyx_n_s_util;
  PyObject *__pyx_n_s_v;
  PyObject *__pyx_n_s_val;
  PyObject *__pyx_n_s_values;
  PyObject *__pyx_n_s_var;
  PyObject *__pyx_n_s_variance;
  PyObject *__pyx_n_s_variations;
  PyObject *__pyx_n_s_vars;
  PyObject *__pyx_n_s_vec;
  PyObject *__pyx_n_s_version;
  PyObject *__pyx_n_s_version_info;
  PyObject *__pyx_n_s_vol;
  PyObject *__pyx_n_s_volErrs;
  PyObject *__pyx_n_s_volume;
  PyObject *__pyx_n_s_volumeErr;
  PyObject *__pyx_n_s_volumeErrs;
  PyObject *__pyx_n_s_volumes;
  PyObject *__pyx_n_s_w;
  PyObject *__pyx_n_s_weight;
  PyObject *__pyx_n_s_write;
  PyObject *__pyx_n_s_writeAIDA;
  PyObject *__pyx_n_s_writeFLAT;
  PyObject *__pyx_n_s_writeVariationsToAnnotations;
  PyObject *__pyx_n_s_writeYODA;
  PyObject *__pyx_n_s_x;
  PyObject *__pyx_n_s_xEdges;
  PyObject *__pyx_n_s_xErrAvg;
  PyObject *__pyx_n_s_xErrAvgs;
  PyObject *__pyx_n_s_xErrs;
  PyObject *__pyx_n_s_xErrsFromSource;
  PyObject *__pyx_n_s_xFoci;
  PyObject *__pyx_n_s_xFocus;
  PyObject *__pyx_n_s_xMax;
  PyObject *__pyx_n_s_xMaxs;
  PyObject *__pyx_n_s_xMean;
  PyObject *__pyx_n_s_xMid;
  PyObject *__pyx_n_s_xMids;
  PyObject *__pyx_n_s_xMin;
  PyObject *__pyx_n_s_xMins;
  PyObject *__pyx_n_s_xRMS;
  PyObject *__pyx_n_s_xStdDev;
  PyObject *__pyx_n_s_xStdErr;
  PyObject *__pyx_n_s_xVals;
  PyObject *__pyx_n_s_xVariance;
  PyObject *__pyx_n_s_xWidth;
  PyObject *__pyx_n_s_xWidths;
  PyObject *__pyx_n_s_xcuts;
  PyObject *__pyx_n_s_xcuts_2;
  PyObject *__pyx_n_s_xedges;
  PyObject *__pyx_n_s_xerrs;
  PyObject *__pyx_n_s_xhigh;
  PyObject *__pyx_n_s_xlow;
  PyObject *__pyx_n_s_xmax;
  PyObject *__pyx_n_s_xmin;
  PyObject *__pyx_n_s_xs;
  PyObject *__pyx_n_s_xyEdges;
  PyObject *__pyx_n_s_xyFocus;
  PyObject *__pyx_n_s_xyMax;
  PyObject *__pyx_n_s_xyMean;
  PyObject *__pyx_n_s_xyMid;
  PyObject *__pyx_n_s_xyMin;
  PyObject *__pyx_n_s_xyRMS;
  PyObject *__pyx_n_s_xyStdDev;
  PyObject *__pyx_n_s_xyStdErr;
  PyObject *__pyx_n_s_xyVariance;
  PyObject *__pyx_n_s_xyWidths;
  PyObject *__pyx_n_s_y;
  PyObject *__pyx_n_s_yEdges;
  PyObject *__pyx_n_s_yErrAvg;
  PyObject *__pyx_n_s_yErrAvgs;
  PyObject *__pyx_n_s_yErrs;
  PyObject *__pyx_n_s_yErrsFromSource;
  PyObject *__pyx_n_s_yFoci;
  PyObject *__pyx_n_s_yFocus;
  PyObject *__pyx_n_s_yMax;
  PyObject *__pyx_n_s_yMaxs;
  PyObject *__pyx_n_s_yMean;
  PyObject *__pyx_n_s_yMeans;
  PyObject *__pyx_n_s_yMid;
  PyObject *__pyx_n_s_yMids;
  PyObject *__pyx_n_s_yMin;
  PyObject *__pyx_n_s_yMins;
  PyObject *__pyx_n_s_yRMS;
  PyObject *__pyx_n_s_yStdDev;
  PyObject *__pyx_n_s_yStdDevs;
  PyObject *__pyx_n_s_yStdErr;
  PyObject *__pyx_n_s_yStdErrs;
  PyObject *__pyx_n_s_yVals;
  PyObject *__pyx_n_s_yVariance;
  PyObject *__pyx_n_s_yWidth;
  PyObject *__pyx_n_s_yWidths;
  PyObject *__pyx_n_s_ycuts;
  PyObject *__pyx_n_s_ycuts_2;
  PyObject *__pyx_n_s_yedges;
  PyObject *__pyx_n_s_yerrs;
  PyObject *__pyx_n_s_yhigh;
  PyObject *__pyx_n_s_ylow;
  PyObject *__pyx_n_b_yoda;
  PyObject *__pyx_n_s_yoda;
  PyObject *__pyx_n_s_yoda_core;
  PyObject *__pyx_n_s_yoda_util;
  PyObject *__pyx_n_s_ys;
  PyObject *__pyx_n_s_z;
  PyObject *__pyx_n_s_zErrAvg;
  PyObject *__pyx_n_s_zErrs;
  PyObject *__pyx_n_s_zErrsFromSource;
  PyObject *__pyx_n_s_zMax;
  PyObject *__pyx_n_s_zMaxs;
  PyObject *__pyx_n_s_zMeans;
  PyObject *__pyx_n_s_zMin;
  PyObject *__pyx_n_s_zMins;
  PyObject *__pyx_n_s_zStdDev;
  PyObject *__pyx_n_s_zStdDevs;
  PyObject *__pyx_n_s_zStdErr;
  PyObject *__pyx_n_s_zStdErrs;
  PyObject *__pyx_n_s_zVals;
  PyObject *__pyx_n_s_zerrs;
  PyObject *__pyx_n_s_zip;
  PyObject *__pyx_n_s_zs;
  PyObject *__pyx_float_0_;
  PyObject *__pyx_float_2_;
  PyObject *__pyx_float_0_5;
  PyObject *__pyx_float_1_0;
  PyObject *__pyx_float_neg_1_;
  PyObject *__pyx_int_0;
  PyObject *__pyx_int_1;
  PyObject *__pyx_int_2;
  PyObject *__pyx_int_3;
  PyObject *__pyx_int_10000;
  PyObject *__pyx_int_neg_1;
  PyObject *__pyx_tuple_;
  PyObject *__pyx_slice__5;
  PyObject *__pyx_slice__6;
  PyObject *__pyx_tuple__7;
  PyObject *__pyx_tuple__9;
  PyObject *__pyx_tuple__10;
  PyObject *__pyx_tuple__12;
  PyObject *__pyx_tuple__13;
  PyObject *__pyx_tuple__18;
  PyObject *__pyx_tuple__21;
  PyObject *__pyx_tuple__23;
  PyObject *__pyx_tuple__24;
  PyObject *__pyx_tuple__33;
  PyObject *__pyx_tuple__37;
  PyObject *__pyx_tuple__40;
  PyObject *__pyx_tuple__59;
  PyObject *__pyx_tuple__63;
  PyObject *__pyx_tuple__65;
  PyObject *__pyx_tuple__86;
  PyObject *__pyx_tuple__92;
  PyObject *__pyx_tuple__94;
  PyObject *__pyx_tuple__129;
  PyObject *__pyx_tuple__131;
  PyObject *__pyx_tuple__133;
  PyObject *__pyx_tuple__156;
  PyObject *__pyx_tuple__194;
  PyObject *__pyx_tuple__196;
  PyObject *__pyx_tuple__198;
  PyObject *__pyx_tuple__200;
  PyObject *__pyx_tuple__201;
  PyObject *__pyx_tuple__203;
  PyObject *__pyx_tuple__207;
  PyObject *__pyx_tuple__211;
  PyObject *__pyx_tuple__214;
  PyObject *__pyx_tuple__218;
  PyObject *__pyx_tuple__220;
  PyObject *__pyx_tuple__221;
  PyObject *__pyx_tuple__223;
  PyObject *__pyx_tuple__228;
  PyObject *__pyx_tuple__233;
  PyObject *__pyx_tuple__235;
  PyObject *__pyx_tuple__236;
  PyObject *__pyx_tuple__238;
  PyObject *__pyx_tuple__250;
  PyObject *__pyx_tuple__252;
  PyObject *__pyx_tuple__258;
  PyObject *__pyx_tuple__262;
  PyObject *__pyx_tuple__264;
  PyObject *__pyx_tuple__266;
  PyObject *__pyx_tuple__268;
  PyObject *__pyx_tuple__270;
  PyObject *__pyx_tuple__272;
  PyObject *__pyx_tuple__275;
  PyObject *__pyx_tuple__277;
  PyObject *__pyx_tuple__278;
  PyObject *__pyx_tuple__280;
  PyObject *__pyx_tuple__282;
  PyObject *__pyx_tuple__284;
  PyObject *__pyx_tuple__285;
  PyObject *__pyx_tuple__287;
  PyObject *__pyx_tuple__288;
  PyObject *__pyx_tuple__290;
  PyObject *__pyx_tuple__294;
  PyObject *__pyx_tuple__299;
  PyObject *__pyx_tuple__301;
  PyObject *__pyx_tuple__305;
  PyObject *__pyx_tuple__309;
  PyObject *__pyx_tuple__315;
  PyObject *__pyx_tuple__324;
  PyObject *__pyx_tuple__329;
  PyObject *__pyx_tuple__344;
  PyObject *__pyx_tuple__355;
  PyObject *__pyx_tuple__357;
  PyObject *__pyx_tuple__362;
  PyObject *__pyx_tuple__364;
  PyObject *__pyx_tuple__365;
  PyObject *__pyx_tuple__383;
  PyObject *__pyx_tuple__385;
  PyObject *__pyx_tuple__493;
  PyObject *__pyx_tuple__495;
  PyObject *__pyx_tuple__500;
  PyObject *__pyx_tuple__536;
  PyObject *__pyx_tuple__538;
  PyObject *__pyx_tuple__540;
  PyObject *__pyx_tuple__542;
  PyObject *__pyx_tuple__549;
  PyObject *__pyx_tuple__551;
  PyObject *__pyx_tuple__554;
  PyObject *__pyx_tuple__556;
  PyObject *__pyx_tuple__558;
  PyObject *__pyx_tuple__559;
  PyObject *__pyx_tuple__574;
  PyObject *__pyx_tuple__576;
  PyObject *__pyx_tuple__581;
  PyObject *__pyx_tuple__594;
  PyObject *__pyx_tuple__630;
  PyObject *__pyx_tuple__632;
  PyObject *__pyx_tuple__658;
  PyObject *__pyx_tuple__662;
  PyObject *__pyx_tuple__664;
  PyObject *__pyx_tuple__673;
  PyObject *__pyx_tuple__675;
  PyObject *__pyx_tuple__677;
  PyObject *__pyx_tuple__678;
  PyObject *__pyx_tuple__680;
  PyObject *__pyx_tuple__687;
  PyObject *__pyx_tuple__689;
  PyObject *__pyx_tuple__692;
  PyObject *__pyx_tuple__697;
  PyObject *__pyx_tuple__699;
  PyObject *__pyx_tuple__704;
  PyObject *__pyx_tuple__718;
  PyObject *__pyx_tuple__761;
  PyObject *__pyx_tuple__763;
  PyObject *__pyx_tuple__765;
  PyObject *__pyx_tuple__767;
  PyObject *__pyx_tuple__769;
  PyObject *__pyx_tuple__774;
  PyObject *__pyx_tuple__781;
  PyObject *__pyx_tuple__783;
  PyObject *__pyx_tuple__785;
  PyObject *__pyx_tuple__786;
  PyObject *__pyx_tuple__788;
  PyObject *__pyx_tuple__790;
  PyObject *__pyx_tuple__792;
  PyObject *__pyx_tuple__794;
  PyObject *__pyx_tuple__796;
  PyObject *__pyx_tuple__800;
  PyObject *__pyx_tuple__805;
  PyObject *__pyx_tuple__808;
  PyObject *__pyx_tuple__826;
  PyObject *__pyx_tuple__828;
  PyObject *__pyx_tuple__837;
  PyObject *__pyx_tuple__848;
  PyObject *__pyx_tuple__851;
  PyObject *__pyx_tuple__871;
  PyObject *__pyx_tuple__878;
  PyObject *__pyx_tuple__880;
  PyObject *__pyx_tuple__886;
  PyObject *__pyx_tuple__892;
  PyObject *__pyx_tuple__924;
  PyObject *__pyx_tuple__926;
  PyObject *__pyx_tuple__927;
  PyObject *__pyx_tuple__929;
  PyObject *__pyx_tuple__932;
  PyObject *__pyx_tuple__934;
  PyObject *__pyx_tuple__935;
  PyObject *__pyx_tuple__937;
  PyObject *__pyx_tuple__939;
  PyObject *__pyx_tuple__942;
  PyObject *__pyx_tuple__944;
  PyObject *__pyx_tuple__946;
  PyObject *__pyx_tuple__948;
  PyObject *__pyx_tuple__951;
  PyObject *__pyx_tuple__953;
  PyObject *__pyx_tuple__954;
  PyObject *__pyx_tuple__956;
  PyObject *__pyx_tuple__958;
  PyObject *__pyx_tuple__960;
  PyObject *__pyx_tuple__961;
  PyObject *__pyx_tuple__963;
  PyObject *__pyx_tuple__964;
  PyObject *__pyx_tuple__966;
  PyObject *__pyx_tuple__968;
  PyObject *__pyx_tuple__970;
  PyObject *__pyx_tuple__971;
  PyObject *__pyx_tuple__975;
  PyObject *__pyx_codeobj__14;
  PyObject *__pyx_codeobj__15;
  PyObject *__pyx_codeobj__16;
  PyObject *__pyx_codeobj__17;
  PyObject *__pyx_codeobj__19;
  PyObject *__pyx_codeobj__20;
  PyObject *__pyx_codeobj__22;
  PyObject *__pyx_codeobj__25;
  PyObject *__pyx_codeobj__26;
  PyObject *__pyx_codeobj__27;
  PyObject *__pyx_codeobj__28;
  PyObject *__pyx_codeobj__29;
  PyObject *__pyx_codeobj__30;
  PyObject *__pyx_codeobj__31;
  PyObject *__pyx_codeobj__32;
  PyObject *__pyx_codeobj__34;
  PyObject *__pyx_codeobj__35;
  PyObject *__pyx_codeobj__36;
  PyObject *__pyx_codeobj__38;
  PyObject *__pyx_codeobj__39;
  PyObject *__pyx_codeobj__41;
  PyObject *__pyx_codeobj__42;
  PyObject *__pyx_codeobj__43;
  PyObject *__pyx_codeobj__44;
  PyObject *__pyx_codeobj__45;
  PyObject *__pyx_codeobj__46;
  PyObject *__pyx_codeobj__47;
  PyObject *__pyx_codeobj__48;
  PyObject *__pyx_codeobj__49;
  PyObject *__pyx_codeobj__50;
  PyObject *__pyx_codeobj__51;
  PyObject *__pyx_codeobj__52;
  PyObject *__pyx_codeobj__53;
  PyObject *__pyx_codeobj__54;
  PyObject *__pyx_codeobj__55;
  PyObject *__pyx_codeobj__56;
  PyObject *__pyx_codeobj__57;
  PyObject *__pyx_codeobj__58;
  PyObject *__pyx_codeobj__60;
  PyObject *__pyx_codeobj__61;
  PyObject *__pyx_codeobj__62;
  PyObject *__pyx_codeobj__64;
  PyObject *__pyx_codeobj__66;
  PyObject *__pyx_codeobj__67;
  PyObject *__pyx_codeobj__68;
  PyObject *__pyx_codeobj__69;
  PyObject *__pyx_codeobj__70;
  PyObject *__pyx_codeobj__71;
  PyObject *__pyx_codeobj__72;
  PyObject *__pyx_codeobj__73;
  PyObject *__pyx_codeobj__74;
  PyObject *__pyx_codeobj__75;
  PyObject *__pyx_codeobj__76;
  PyObject *__pyx_codeobj__77;
  PyObject *__pyx_codeobj__78;
  PyObject *__pyx_codeobj__79;
  PyObject *__pyx_codeobj__80;
  PyObject *__pyx_codeobj__81;
  PyObject *__pyx_codeobj__82;
  PyObject *__pyx_codeobj__83;
  PyObject *__pyx_codeobj__84;
  PyObject *__pyx_codeobj__85;
  PyObject *__pyx_codeobj__87;
  PyObject *__pyx_codeobj__88;
  PyObject *__pyx_codeobj__89;
  PyObject *__pyx_codeobj__90;
  PyObject *__pyx_codeobj__91;
  PyObject *__pyx_codeobj__93;
  PyObject *__pyx_codeobj__95;
  PyObject *__pyx_codeobj__96;
  PyObject *__pyx_codeobj__97;
  PyObject *__pyx_codeobj__98;
  PyObject *__pyx_codeobj__99;
  PyObject *__pyx_codeobj__100;
  PyObject *__pyx_codeobj__101;
  PyObject *__pyx_codeobj__102;
  PyObject *__pyx_codeobj__103;
  PyObject *__pyx_codeobj__104;
  PyObject *__pyx_codeobj__105;
  PyObject *__pyx_codeobj__106;
  PyObject *__pyx_codeobj__107;
  PyObject *__pyx_codeobj__108;
  PyObject *__pyx_codeobj__109;
  PyObject *__pyx_codeobj__110;
  PyObject *__pyx_codeobj__111;
  PyObject *__pyx_codeobj__112;
  PyObject *__pyx_codeobj__113;
  PyObject *__pyx_codeobj__114;
  PyObject *__pyx_codeobj__115;
  PyObject *__pyx_codeobj__116;
  PyObject *__pyx_codeobj__117;
  PyObject *__pyx_codeobj__118;
  PyObject *__pyx_codeobj__119;
  PyObject *__pyx_codeobj__120;
  PyObject *__pyx_codeobj__121;
  PyObject *__pyx_codeobj__122;
  PyObject *__pyx_codeobj__123;
  PyObject *__pyx_codeobj__124;
  PyObject *__pyx_codeobj__125;
  PyObject *__pyx_codeobj__126;
  PyObject *__pyx_codeobj__127;
  PyObject *__pyx_codeobj__128;
  PyObject *__pyx_codeobj__130;
  PyObject *__pyx_codeobj__132;
  PyObject *__pyx_codeobj__134;
  PyObject *__pyx_codeobj__135;
  PyObject *__pyx_codeobj__136;
  PyObject *__pyx_codeobj__137;
  PyObject *__pyx_codeobj__138;
  PyObject *__pyx_codeobj__139;
  PyObject *__pyx_codeobj__140;
  PyObject *__pyx_codeobj__141;
  PyObject *__pyx_codeobj__142;
  PyObject *__pyx_codeobj__143;
  PyObject *__pyx_codeobj__144;
  PyObject *__pyx_codeobj__145;
  PyObject *__pyx_codeobj__146;
  PyObject *__pyx_codeobj__147;
  PyObject *__pyx_codeobj__148;
  PyObject *__pyx_codeobj__149;
  PyObject *__pyx_codeobj__150;
  PyObject *__pyx_codeobj__151;
  PyObject *__pyx_codeobj__152;
  PyObject *__pyx_codeobj__153;
  PyObject *__pyx_codeobj__154;
  PyObject *__pyx_codeobj__155;
  PyObject *__pyx_codeobj__157;
  PyObject *__pyx_codeobj__158;
  PyObject *__pyx_codeobj__159;
  PyObject *__pyx_codeobj__160;
  PyObject *__pyx_codeobj__161;
  PyObject *__pyx_codeobj__162;
  PyObject *__pyx_codeobj__163;
  PyObject *__pyx_codeobj__164;
  PyObject *__pyx_codeobj__165;
  PyObject *__pyx_codeobj__166;
  PyObject *__pyx_codeobj__167;
  PyObject *__pyx_codeobj__168;
  PyObject *__pyx_codeobj__169;
  PyObject *__pyx_codeobj__170;
  PyObject *__pyx_codeobj__171;
  PyObject *__pyx_codeobj__172;
  PyObject *__pyx_codeobj__173;
  PyObject *__pyx_codeobj__174;
  PyObject *__pyx_codeobj__175;
  PyObject *__pyx_codeobj__176;
  PyObject *__pyx_codeobj__177;
  PyObject *__pyx_codeobj__178;
  PyObject *__pyx_codeobj__179;
  PyObject *__pyx_codeobj__180;
  PyObject *__pyx_codeobj__181;
  PyObject *__pyx_codeobj__182;
  PyObject *__pyx_codeobj__183;
  PyObject *__pyx_codeobj__184;
  PyObject *__pyx_codeobj__185;
  PyObject *__pyx_codeobj__186;
  PyObject *__pyx_codeobj__187;
  PyObject *__pyx_codeobj__188;
  PyObject *__pyx_codeobj__189;
  PyObject *__pyx_codeobj__190;
  PyObject *__pyx_codeobj__191;
  PyObject *__pyx_codeobj__192;
  PyObject *__pyx_codeobj__193;
  PyObject *__pyx_codeobj__195;
  PyObject *__pyx_codeobj__197;
  PyObject *__pyx_codeobj__199;
  PyObject *__pyx_codeobj__202;
  PyObject *__pyx_codeobj__204;
  PyObject *__pyx_codeobj__205;
  PyObject *__pyx_codeobj__206;
  PyObject *__pyx_codeobj__208;
  PyObject *__pyx_codeobj__209;
  PyObject *__pyx_codeobj__210;
  PyObject *__pyx_codeobj__212;
  PyObject *__pyx_codeobj__213;
  PyObject *__pyx_codeobj__215;
  PyObject *__pyx_codeobj__216;
  PyObject *__pyx_codeobj__217;
  PyObject *__pyx_codeobj__219;
  PyObject *__pyx_codeobj__222;
  PyObject *__pyx_codeobj__224;
  PyObject *__pyx_codeobj__225;
  PyObject *__pyx_codeobj__226;
  PyObject *__pyx_codeobj__227;
  PyObject *__pyx_codeobj__229;
  PyObject *__pyx_codeobj__230;
  PyObject *__pyx_codeobj__231;
  PyObject *__pyx_codeobj__232;
  PyObject *__pyx_codeobj__234;
  PyObject *__pyx_codeobj__237;
  PyObject *__pyx_codeobj__239;
  PyObject *__pyx_codeobj__240;
  PyObject *__pyx_codeobj__241;
  PyObject *__pyx_codeobj__242;
  PyObject *__pyx_codeobj__243;
  PyObject *__pyx_codeobj__244;
  PyObject *__pyx_codeobj__245;
  PyObject *__pyx_codeobj__246;
  PyObject *__pyx_codeobj__247;
  PyObject *__pyx_codeobj__248;
  PyObject *__pyx_codeobj__249;
  PyObject *__pyx_codeobj__251;
  PyObject *__pyx_codeobj__253;
  PyObject *__pyx_codeobj__254;
  PyObject *__pyx_codeobj__255;
  PyObject *__pyx_codeobj__256;
  PyObject *__pyx_codeobj__257;
  PyObject *__pyx_codeobj__259;
  PyObject *__pyx_codeobj__260;
  PyObject *__pyx_codeobj__261;
  PyObject *__pyx_codeobj__263;
  PyObject *__pyx_codeobj__265;
  PyObject *__pyx_codeobj__267;
  PyObject *__pyx_codeobj__269;
  PyObject *__pyx_codeobj__271;
  PyObject *__pyx_codeobj__273;
  PyObject *__pyx_codeobj__274;
  PyObject *__pyx_codeobj__276;
  PyObject *__pyx_codeobj__279;
  PyObject *__pyx_codeobj__281;
  PyObject *__pyx_codeobj__283;
  PyObject *__pyx_codeobj__286;
  PyObject *__pyx_codeobj__289;
  PyObject *__pyx_codeobj__291;
  PyObject *__pyx_codeobj__292;
  PyObject *__pyx_codeobj__293;
  PyObject *__pyx_codeobj__295;
  PyObject *__pyx_codeobj__296;
  PyObject *__pyx_codeobj__297;
  PyObject *__pyx_codeobj__298;
  PyObject *__pyx_codeobj__300;
  PyObject *__pyx_codeobj__302;
  PyObject *__pyx_codeobj__303;
  PyObject *__pyx_codeobj__304;
  PyObject *__pyx_codeobj__306;
  PyObject *__pyx_codeobj__307;
  PyObject *__pyx_codeobj__308;
  PyObject *__pyx_codeobj__310;
  PyObject *__pyx_codeobj__311;
  PyObject *__pyx_codeobj__312;
  PyObject *__pyx_codeobj__313;
  PyObject *__pyx_codeobj__314;
  PyObject *__pyx_codeobj__316;
  PyObject *__pyx_codeobj__317;
  PyObject *__pyx_codeobj__318;
  PyObject *__pyx_codeobj__319;
  PyObject *__pyx_codeobj__320;
  PyObject *__pyx_codeobj__321;
  PyObject *__pyx_codeobj__322;
  PyObject *__pyx_codeobj__323;
  PyObject *__pyx_codeobj__325;
  PyObject *__pyx_codeobj__326;
  PyObject *__pyx_codeobj__327;
  PyObject *__pyx_codeobj__328;
  PyObject *__pyx_codeobj__330;
  PyObject *__pyx_codeobj__331;
  PyObject *__pyx_codeobj__332;
  PyObject *__pyx_codeobj__333;
  PyObject *__pyx_codeobj__334;
  PyObject *__pyx_codeobj__335;
  PyObject *__pyx_codeobj__336;
  PyObject *__pyx_codeobj__337;
  PyObject *__pyx_codeobj__338;
  PyObject *__pyx_codeobj__339;
  PyObject *__pyx_codeobj__340;
  PyObject *__pyx_codeobj__341;
  PyObject *__pyx_codeobj__342;
  PyObject *__pyx_codeobj__343;
  PyObject *__pyx_codeobj__345;
  PyObject *__pyx_codeobj__346;
  PyObject *__pyx_codeobj__347;
  PyObject *__pyx_codeobj__348;
  PyObject *__pyx_codeobj__349;
  PyObject *__pyx_codeobj__350;
  PyObject *__pyx_codeobj__351;
  PyObject *__pyx_codeobj__352;
  PyObject *__pyx_codeobj__353;
  PyObject *__pyx_codeobj__354;
  PyObject *__pyx_codeobj__356;
  PyObject *__pyx_codeobj__358;
  PyObject *__pyx_codeobj__359;
  PyObject *__pyx_codeobj__360;
  PyObject *__pyx_codeobj__361;
  PyObject *__pyx_codeobj__363;
  PyObject *__pyx_codeobj__366;
  PyObject *__pyx_codeobj__367;
  PyObject *__pyx_codeobj__368;
  PyObject *__pyx_codeobj__369;
  PyObject *__pyx_codeobj__370;
  PyObject *__pyx_codeobj__371;
  PyObject *__pyx_codeobj__372;
  PyObject *__pyx_codeobj__373;
  PyObject *__pyx_codeobj__374;
  PyObject *__pyx_codeobj__375;
  PyObject *__pyx_codeobj__376;
  PyObject *__pyx_codeobj__377;
  PyObject *__pyx_codeobj__378;
  PyObject *__pyx_codeobj__379;
  PyObject *__pyx_codeobj__380;
  PyObject *__pyx_codeobj__381;
  PyObject *__pyx_codeobj__382;
  PyObject *__pyx_codeobj__384;
  PyObject *__pyx_codeobj__386;
  PyObject *__pyx_codeobj__387;
  PyObject *__pyx_codeobj__388;
  PyObject *__pyx_codeobj__389;
  PyObject *__pyx_codeobj__390;
  PyObject *__pyx_codeobj__391;
  PyObject *__pyx_codeobj__392;
  PyObject *__pyx_codeobj__393;
  PyObject *__pyx_codeobj__394;
  PyObject *__pyx_codeobj__395;
  PyObject *__pyx_codeobj__396;
  PyObject *__pyx_codeobj__397;
  PyObject *__pyx_codeobj__398;
  PyObject *__pyx_codeobj__399;
  PyObject *__pyx_codeobj__400;
  PyObject *__pyx_codeobj__401;
  PyObject *__pyx_codeobj__402;
  PyObject *__pyx_codeobj__403;
  PyObject *__pyx_codeobj__404;
  PyObject *__pyx_codeobj__405;
  PyObject *__pyx_codeobj__406;
  PyObject *__pyx_codeobj__407;
  PyObject *__pyx_codeobj__408;
  PyObject *__pyx_codeobj__409;
  PyObject *__pyx_codeobj__410;
  PyObject *__pyx_codeobj__411;
  PyObject *__pyx_codeobj__412;
  PyObject *__pyx_codeobj__413;
  PyObject *__pyx_codeobj__414;
  PyObject *__pyx_codeobj__415;
  PyObject *__pyx_codeobj__416;
  PyObject *__pyx_codeobj__417;
  PyObject *__pyx_codeobj__418;
  PyObject *__pyx_codeobj__419;
  PyObject *__pyx_codeobj__420;
  PyObject *__pyx_codeobj__421;
  PyObject *__pyx_codeobj__422;
  PyObject *__pyx_codeobj__423;
  PyObject *__pyx_codeobj__424;
  PyObject *__pyx_codeobj__425;
  PyObject *__pyx_codeobj__426;
  PyObject *__pyx_codeobj__427;
  PyObject *__pyx_codeobj__428;
  PyObject *__pyx_codeobj__429;
  PyObject *__pyx_codeobj__430;
  PyObject *__pyx_codeobj__431;
  PyObject *__pyx_codeobj__432;
  PyObject *__pyx_codeobj__433;
  PyObject *__pyx_codeobj__434;
  PyObject *__pyx_codeobj__435;
  PyObject *__pyx_codeobj__436;
  PyObject *__pyx_codeobj__437;
  PyObject *__pyx_codeobj__438;
  PyObject *__pyx_codeobj__439;
  PyObject *__pyx_codeobj__440;
  PyObject *__pyx_codeobj__441;
  PyObject *__pyx_codeobj__442;
  PyObject *__pyx_codeobj__443;
  PyObject *__pyx_codeobj__444;
  PyObject *__pyx_codeobj__445;
  PyObject *__pyx_codeobj__446;
  PyObject *__pyx_codeobj__447;
  PyObject *__pyx_codeobj__448;
  PyObject *__pyx_codeobj__449;
  PyObject *__pyx_codeobj__450;
  PyObject *__pyx_codeobj__451;
  PyObject *__pyx_codeobj__452;
  PyObject *__pyx_codeobj__453;
  PyObject *__pyx_codeobj__454;
  PyObject *__pyx_codeobj__455;
  PyObject *__pyx_codeobj__456;
  PyObject *__pyx_codeobj__457;
  PyObject *__pyx_codeobj__458;
  PyObject *__pyx_codeobj__459;
  PyObject *__pyx_codeobj__460;
  PyObject *__pyx_codeobj__461;
  PyObject *__pyx_codeobj__462;
  PyObject *__pyx_codeobj__463;
  PyObject *__pyx_codeobj__464;
  PyObject *__pyx_codeobj__465;
  PyObject *__pyx_codeobj__466;
  PyObject *__pyx_codeobj__467;
  PyObject *__pyx_codeobj__468;
  PyObject *__pyx_codeobj__469;
  PyObject *__pyx_codeobj__470;
  PyObject *__pyx_codeobj__471;
  PyObject *__pyx_codeobj__472;
  PyObject *__pyx_codeobj__473;
  PyObject *__pyx_codeobj__474;
  PyObject *__pyx_codeobj__475;
  PyObject *__pyx_codeobj__476;
  PyObject *__pyx_codeobj__477;
  PyObject *__pyx_codeobj__478;
  PyObject *__pyx_codeobj__479;
  PyObject *__pyx_codeobj__480;
  PyObject *__pyx_codeobj__481;
  PyObject *__pyx_codeobj__482;
  PyObject *__pyx_codeobj__483;
  PyObject *__pyx_codeobj__484;
  PyObject *__pyx_codeobj__485;
  PyObject *__pyx_codeobj__486;
  PyObject *__pyx_codeobj__487;
  PyObject *__pyx_codeobj__488;
  PyObject *__pyx_codeobj__489;
  PyObject *__pyx_codeobj__490;
  PyObject *__pyx_codeobj__491;
  PyObject *__pyx_codeobj__492;
  PyObject *__pyx_codeobj__494;
  PyObject *__pyx_codeobj__496;
  PyObject *__pyx_codeobj__497;
  PyObject *__pyx_codeobj__498;
  PyObject *__pyx_codeobj__499;
  PyObject *__pyx_codeobj__501;
  PyObject *__pyx_codeobj__502;
  PyObject *__pyx_codeobj__503;
  PyObject *__pyx_codeobj__504;
  PyObject *__pyx_codeobj__505;
  PyObject *__pyx_codeobj__506;
  PyObject *__pyx_codeobj__507;
  PyObject *__pyx_codeobj__508;
  PyObject *__pyx_codeobj__509;
  PyObject *__pyx_codeobj__510;
  PyObject *__pyx_codeobj__511;
  PyObject *__pyx_codeobj__512;
  PyObject *__pyx_codeobj__513;
  PyObject *__pyx_codeobj__514;
  PyObject *__pyx_codeobj__515;
  PyObject *__pyx_codeobj__516;
  PyObject *__pyx_codeobj__517;
  PyObject *__pyx_codeobj__518;
  PyObject *__pyx_codeobj__519;
  PyObject *__pyx_codeobj__520;
  PyObject *__pyx_codeobj__521;
  PyObject *__pyx_codeobj__522;
  PyObject *__pyx_codeobj__523;
  PyObject *__pyx_codeobj__524;
  PyObject *__pyx_codeobj__525;
  PyObject *__pyx_codeobj__526;
  PyObject *__pyx_codeobj__527;
  PyObject *__pyx_codeobj__528;
  PyObject *__pyx_codeobj__529;
  PyObject *__pyx_codeobj__530;
  PyObject *__pyx_codeobj__531;
  PyObject *__pyx_codeobj__532;
  PyObject *__pyx_codeobj__533;
  PyObject *__pyx_codeobj__534;
  PyObject *__pyx_codeobj__535;
  PyObject *__pyx_codeobj__537;
  PyObject *__pyx_codeobj__539;
  PyObject *__pyx_codeobj__541;
  PyObject *__pyx_codeobj__543;
  PyObject *__pyx_codeobj__544;
  PyObject *__pyx_codeobj__545;
  PyObject *__pyx_codeobj__546;
  PyObject *__pyx_codeobj__547;
  PyObject *__pyx_codeobj__548;
  PyObject *__pyx_codeobj__550;
  PyObject *__pyx_codeobj__552;
  PyObject *__pyx_codeobj__553;
  PyObject *__pyx_codeobj__555;
  PyObject *__pyx_codeobj__557;
  PyObject *__pyx_codeobj__560;
  PyObject *__pyx_codeobj__561;
  PyObject *__pyx_codeobj__562;
  PyObject *__pyx_codeobj__563;
  PyObject *__pyx_codeobj__564;
  PyObject *__pyx_codeobj__565;
  PyObject *__pyx_codeobj__566;
  PyObject *__pyx_codeobj__567;
  PyObject *__pyx_codeobj__568;
  PyObject *__pyx_codeobj__569;
  PyObject *__pyx_codeobj__570;
  PyObject *__pyx_codeobj__571;
  PyObject *__pyx_codeobj__572;
  PyObject *__pyx_codeobj__573;
  PyObject *__pyx_codeobj__575;
  PyObject *__pyx_codeobj__577;
  PyObject *__pyx_codeobj__578;
  PyObject *__pyx_codeobj__579;
  PyObject *__pyx_codeobj__580;
  PyObject *__pyx_codeobj__582;
  PyObject *__pyx_codeobj__583;
  PyObject *__pyx_codeobj__584;
  PyObject *__pyx_codeobj__585;
  PyObject *__pyx_codeobj__586;
  PyObject *__pyx_codeobj__587;
  PyObject *__pyx_codeobj__588;
  PyObject *__pyx_codeobj__589;
  PyObject *__pyx_codeobj__590;
  PyObject *__pyx_codeobj__591;
  PyObject *__pyx_codeobj__592;
  PyObject *__pyx_codeobj__593;
  PyObject *__pyx_codeobj__595;
  PyObject *__pyx_codeobj__596;
  PyObject *__pyx_codeobj__597;
  PyObject *__pyx_codeobj__598;
  PyObject *__pyx_codeobj__599;
  PyObject *__pyx_codeobj__600;
  PyObject *__pyx_codeobj__601;
  PyObject *__pyx_codeobj__602;
  PyObject *__pyx_codeobj__603;
  PyObject *__pyx_codeobj__604;
  PyObject *__pyx_codeobj__605;
  PyObject *__pyx_codeobj__606;
  PyObject *__pyx_codeobj__607;
  PyObject *__pyx_codeobj__608;
  PyObject *__pyx_codeobj__609;
  PyObject *__pyx_codeobj__610;
  PyObject *__pyx_codeobj__611;
  PyObject *__pyx_codeobj__612;
  PyObject *__pyx_codeobj__613;
  PyObject *__pyx_codeobj__614;
  PyObject *__pyx_codeobj__615;
  PyObject *__pyx_codeobj__616;
  PyObject *__pyx_codeobj__617;
  PyObject *__pyx_codeobj__618;
  PyObject *__pyx_codeobj__619;
  PyObject *__pyx_codeobj__620;
  PyObject *__pyx_codeobj__621;
  PyObject *__pyx_codeobj__622;
  PyObject *__pyx_codeobj__623;
  PyObject *__pyx_codeobj__624;
  PyObject *__pyx_codeobj__625;
  PyObject *__pyx_codeobj__626;
  PyObject *__pyx_codeobj__627;
  PyObject *__pyx_codeobj__628;
  PyObject *__pyx_codeobj__629;
  PyObject *__pyx_codeobj__631;
  PyObject *__pyx_codeobj__633;
  PyObject *__pyx_codeobj__634;
  PyObject *__pyx_codeobj__635;
  PyObject *__pyx_codeobj__636;
  PyObject *__pyx_codeobj__637;
  PyObject *__pyx_codeobj__638;
  PyObject *__pyx_codeobj__639;
  PyObject *__pyx_codeobj__640;
  PyObject *__pyx_codeobj__641;
  PyObject *__pyx_codeobj__642;
  PyObject *__pyx_codeobj__643;
  PyObject *__pyx_codeobj__644;
  PyObject *__pyx_codeobj__645;
  PyObject *__pyx_codeobj__646;
  PyObject *__pyx_codeobj__647;
  PyObject *__pyx_codeobj__648;
  PyObject *__pyx_codeobj__649;
  PyObject *__pyx_codeobj__650;
  PyObject *__pyx_codeobj__651;
  PyObject *__pyx_codeobj__652;
  PyObject *__pyx_codeobj__653;
  PyObject *__pyx_codeobj__654;
  PyObject *__pyx_codeobj__655;
  PyObject *__pyx_codeobj__656;
  PyObject *__pyx_codeobj__657;
  PyObject *__pyx_codeobj__659;
  PyObject *__pyx_codeobj__660;
  PyObject *__pyx_codeobj__661;
  PyObject *__pyx_codeobj__663;
  PyObject *__pyx_codeobj__665;
  PyObject *__pyx_codeobj__666;
  PyObject *__pyx_codeobj__667;
  PyObject *__pyx_codeobj__668;
  PyObject *__pyx_codeobj__669;
  PyObject *__pyx_codeobj__670;
  PyObject *__pyx_codeobj__671;
  PyObject *__pyx_codeobj__672;
  PyObject *__pyx_codeobj__674;
  PyObject *__pyx_codeobj__676;
  PyObject *__pyx_codeobj__679;
  PyObject *__pyx_codeobj__681;
  PyObject *__pyx_codeobj__682;
  PyObject *__pyx_codeobj__683;
  PyObject *__pyx_codeobj__684;
  PyObject *__pyx_codeobj__685;
  PyObject *__pyx_codeobj__686;
  PyObject *__pyx_codeobj__688;
  PyObject *__pyx_codeobj__690;
  PyObject *__pyx_codeobj__691;
  PyObject *__pyx_codeobj__693;
  PyObject *__pyx_codeobj__694;
  PyObject *__pyx_codeobj__695;
  PyObject *__pyx_codeobj__696;
  PyObject *__pyx_codeobj__698;
  PyObject *__pyx_codeobj__700;
  PyObject *__pyx_codeobj__701;
  PyObject *__pyx_codeobj__702;
  PyObject *__pyx_codeobj__703;
  PyObject *__pyx_codeobj__705;
  PyObject *__pyx_codeobj__706;
  PyObject *__pyx_codeobj__707;
  PyObject *__pyx_codeobj__708;
  PyObject *__pyx_codeobj__709;
  PyObject *__pyx_codeobj__710;
  PyObject *__pyx_codeobj__711;
  PyObject *__pyx_codeobj__712;
  PyObject *__pyx_codeobj__713;
  PyObject *__pyx_codeobj__714;
  PyObject *__pyx_codeobj__715;
  PyObject *__pyx_codeobj__716;
  PyObject *__pyx_codeobj__717;
  PyObject *__pyx_codeobj__719;
  PyObject *__pyx_codeobj__720;
  PyObject *__pyx_codeobj__721;
  PyObject *__pyx_codeobj__722;
  PyObject *__pyx_codeobj__723;
  PyObject *__pyx_codeobj__724;
  PyObject *__pyx_codeobj__725;
  PyObject *__pyx_codeobj__726;
  PyObject *__pyx_codeobj__727;
  PyObject *__pyx_codeobj__728;
  PyObject *__pyx_codeobj__729;
  PyObject *__pyx_codeobj__730;
  PyObject *__pyx_codeobj__731;
  PyObject *__pyx_codeobj__732;
  PyObject *__pyx_codeobj__733;
  PyObject *__pyx_codeobj__734;
  PyObject *__pyx_codeobj__735;
  PyObject *__pyx_codeobj__736;
  PyObject *__pyx_codeobj__737;
  PyObject *__pyx_codeobj__738;
  PyObject *__pyx_codeobj__739;
  PyObject *__pyx_codeobj__740;
  PyObject *__pyx_codeobj__741;
  PyObject *__pyx_codeobj__742;
  PyObject *__pyx_codeobj__743;
  PyObject *__pyx_codeobj__744;
  PyObject *__pyx_codeobj__745;
  PyObject *__pyx_codeobj__746;
  PyObject *__pyx_codeobj__747;
  PyObject *__pyx_codeobj__748;
  PyObject *__pyx_codeobj__749;
  PyObject *__pyx_codeobj__750;
  PyObject *__pyx_codeobj__751;
  PyObject *__pyx_codeobj__752;
  PyObject *__pyx_codeobj__753;
  PyObject *__pyx_codeobj__754;
  PyObject *__pyx_codeobj__755;
  PyObject *__pyx_codeobj__756;
  PyObject *__pyx_codeobj__757;
  PyObject *__pyx_codeobj__758;
  PyObject *__pyx_codeobj__759;
  PyObject *__pyx_codeobj__760;
  PyObject *__pyx_codeobj__762;
  PyObject *__pyx_codeobj__764;
  PyObject *__pyx_codeobj__766;
  PyObject *__pyx_codeobj__768;
  PyObject *__pyx_codeobj__770;
  PyObject *__pyx_codeobj__771;
  PyObject *__pyx_codeobj__772;
  PyObject *__pyx_codeobj__773;
  PyObject *__pyx_codeobj__775;
  PyObject *__pyx_codeobj__776;
  PyObject *__pyx_codeobj__777;
  PyObject *__pyx_codeobj__778;
  PyObject *__pyx_codeobj__779;
  PyObject *__pyx_codeobj__780;
  PyObject *__pyx_codeobj__782;
  PyObject *__pyx_codeobj__784;
  PyObject *__pyx_codeobj__787;
  PyObject *__pyx_codeobj__789;
  PyObject *__pyx_codeobj__791;
  PyObject *__pyx_codeobj__793;
  PyObject *__pyx_codeobj__795;
  PyObject *__pyx_codeobj__797;
  PyObject *__pyx_codeobj__798;
  PyObject *__pyx_codeobj__799;
  PyObject *__pyx_codeobj__801;
  PyObject *__pyx_codeobj__802;
  PyObject *__pyx_codeobj__803;
  PyObject *__pyx_codeobj__804;
  PyObject *__pyx_codeobj__806;
  PyObject *__pyx_codeobj__807;
  PyObject *__pyx_codeobj__809;
  PyObject *__pyx_codeobj__810;
  PyObject *__pyx_codeobj__811;
  PyObject *__pyx_codeobj__812;
  PyObject *__pyx_codeobj__813;
  PyObject *__pyx_codeobj__814;
  PyObject *__pyx_codeobj__815;
  PyObject *__pyx_codeobj__816;
  PyObject *__pyx_codeobj__817;
  PyObject *__pyx_codeobj__818;
  PyObject *__pyx_codeobj__819;
  PyObject *__pyx_codeobj__820;
  PyObject *__pyx_codeobj__821;
  PyObject *__pyx_codeobj__822;
  PyObject *__pyx_codeobj__823;
  PyObject *__pyx_codeobj__824;
  PyObject *__pyx_codeobj__825;
  PyObject *__pyx_codeobj__827;
  PyObject *__pyx_codeobj__829;
  PyObject *__pyx_codeobj__830;
  PyObject *__pyx_codeobj__831;
  PyObject *__pyx_codeobj__832;
  PyObject *__pyx_codeobj__833;
  PyObject *__pyx_codeobj__834;
  PyObject *__pyx_codeobj__835;
  PyObject *__pyx_codeobj__836;
  PyObject *__pyx_codeobj__838;
  PyObject *__pyx_codeobj__839;
  PyObject *__pyx_codeobj__840;
  PyObject *__pyx_codeobj__841;
  PyObject *__pyx_codeobj__842;
  PyObject *__pyx_codeobj__843;
  PyObject *__pyx_codeobj__844;
  PyObject *__pyx_codeobj__845;
  PyObject *__pyx_codeobj__846;
  PyObject *__pyx_codeobj__847;
  PyObject *__pyx_codeobj__849;
  PyObject *__pyx_codeobj__850;
  PyObject *__pyx_codeobj__852;
  PyObject *__pyx_codeobj__853;
  PyObject *__pyx_codeobj__854;
  PyObject *__pyx_codeobj__855;
  PyObject *__pyx_codeobj__856;
  PyObject *__pyx_codeobj__857;
  PyObject *__pyx_codeobj__858;
  PyObject *__pyx_codeobj__859;
  PyObject *__pyx_codeobj__860;
  PyObject *__pyx_codeobj__861;
  PyObject *__pyx_codeobj__862;
  PyObject *__pyx_codeobj__863;
  PyObject *__pyx_codeobj__864;
  PyObject *__pyx_codeobj__865;
  PyObject *__pyx_codeobj__866;
  PyObject *__pyx_codeobj__867;
  PyObject *__pyx_codeobj__868;
  PyObject *__pyx_codeobj__869;
  PyObject *__pyx_codeobj__870;
  PyObject *__pyx_codeobj__872;
  PyObject *__pyx_codeobj__873;
  PyObject *__pyx_codeobj__874;
  PyObject *__pyx_codeobj__875;
  PyObject *__pyx_codeobj__876;
  PyObject *__pyx_codeobj__877;
  PyObject *__pyx_codeobj__879;
  PyObject *__pyx_codeobj__881;
  PyObject *__pyx_codeobj__882;
  PyObject *__pyx_codeobj__883;
  PyObject *__pyx_codeobj__884;
  PyObject *__pyx_codeobj__885;
  PyObject *__pyx_codeobj__887;
  PyObject *__pyx_codeobj__888;
  PyObject *__pyx_codeobj__889;
  PyObject *__pyx_codeobj__890;
  PyObject *__pyx_codeobj__891;
  PyObject *__pyx_codeobj__893;
  PyObject *__pyx_codeobj__894;
  PyObject *__pyx_codeobj__895;
  PyObject *__pyx_codeobj__896;
  PyObject *__pyx_codeobj__897;
  PyObject *__pyx_codeobj__898;
  PyObject *__pyx_codeobj__899;
  PyObject *__pyx_codeobj__900;
  PyObject *__pyx_codeobj__901;
  PyObject *__pyx_codeobj__902;
  PyObject *__pyx_codeobj__903;
  PyObject *__pyx_codeobj__904;
  PyObject *__pyx_codeobj__905;
  PyObject *__pyx_codeobj__906;
  PyObject *__pyx_codeobj__907;
  PyObject *__pyx_codeobj__908;
  PyObject *__pyx_codeobj__909;
  PyObject *__pyx_codeobj__910;
  PyObject *__pyx_codeobj__911;
  PyObject *__pyx_codeobj__912;
  PyObject *__pyx_codeobj__913;
  PyObject *__pyx_codeobj__914;
  PyObject *__pyx_codeobj__915;
  PyObject *__pyx_codeobj__916;
  PyObject *__pyx_codeobj__917;
  PyObject *__pyx_codeobj__918;
  PyObject *__pyx_codeobj__919;
  PyObject *__pyx_codeobj__920;
  PyObject *__pyx_codeobj__921;
  PyObject *__pyx_codeobj__922;
  PyObject *__pyx_codeobj__923;
  PyObject *__pyx_codeobj__925;
  PyObject *__pyx_codeobj__928;
  PyObject *__pyx_codeobj__930;
  PyObject *__pyx_codeobj__931;
  PyObject *__pyx_codeobj__933;
  PyObject *__pyx_codeobj__936;
  PyObject *__pyx_codeobj__938;
  PyObject *__pyx_codeobj__940;
  PyObject *__pyx_codeobj__941;
  PyObject *__pyx_codeobj__943;
  PyObject *__pyx_codeobj__945;
  PyObject *__pyx_codeobj__947;
  PyObject *__pyx_codeobj__949;
  PyObject *__pyx_codeobj__950;
  PyObject *__pyx_codeobj__952;
  PyObject *__pyx_codeobj__955;
  PyObject *__pyx_codeobj__957;
  PyObject *__pyx_codeobj__959;
  PyObject *__pyx_codeobj__962;
  PyObject *__pyx_codeobj__965;
  PyObject *__pyx_codeobj__967;
  PyObject *__pyx_codeobj__969;
  PyObject *__pyx_codeobj__972;
  PyObject *__pyx_codeobj__973;
  PyObject *__pyx_codeobj__974;
  PyObject *__pyx_codeobj__976;
} __pyx_mstate;

#if CYTHON_USE_MODULE_STATE
#ifdef __cplusplus
namespace {
  extern struct PyModuleDef __pyx_moduledef;
} /* anonymous namespace */
#else
static struct PyModuleDef __pyx_moduledef;
#endif

#define __pyx_mstate(o) ((__pyx_mstate *)__Pyx_PyModule_GetState(o))

#define __pyx_mstate_global (__pyx_mstate(PyState_FindModule(&__pyx_moduledef)))

#define __pyx_m (PyState_FindModule(&__pyx_moduledef))
#else
static __pyx_mstate __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstate *__pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_clear(PyObject *m) {
  __pyx_mstate *clear_module_state = __pyx_mstate(m);
  if (!clear_module_state) return 0;
  Py_CLEAR(clear_module_state->__pyx_d);
  Py_CLEAR(clear_module_state->__pyx_b);
  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
  #endif
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4util_Base);
  Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Dbn0D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Dbn0D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Bin);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Bin);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Bin1D_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Bin1D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_HistoBin1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_HistoBin1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_ProfileBin1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_ProfileBin1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_AnalysisObject);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_AnalysisObject);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Counter);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Counter);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Histo1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Histo1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Profile1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Profile1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Bin2D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Bin2D_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_ProfileBin2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_ProfileBin2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_HistoBin2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_HistoBin2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Histo2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Histo2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Profile2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Profile2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Point);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Point);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Point1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Point1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Point2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Point2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Point3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Point3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Scatter1D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Scatter1D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Scatter2D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Scatter2D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core_Scatter3D);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core_Scatter3D);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr);
  Py_CLEAR(clear_module_state->__pyx_kp_s_0_2e);
  Py_CLEAR(clear_module_state->__pyx_n_s_AO);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_annotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_annotations);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_annotationsDict);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_clearAnnotations);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_dump);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_hasAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_path);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_rmAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_setAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_setPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_setTitle);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_title);
  Py_CLEAR(clear_module_state->__pyx_n_s_AnalysisObject_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_AssertionError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_merge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn1D_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_merge);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin1D_Dbn2D_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_adjacentTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_area);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_xyWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn2D_yWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_adjacentTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_area);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_xyWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin2D_Dbn3D_yWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Bin_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_CFUNCTYPE);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Callback_is_not_of_type_double_d);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_err);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Counter_val);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn0D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Dbn0D_val_g_err_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_fill);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Dbn1D_mean_s_stddev_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_mean);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Dbn2D_mean_s_stdDev_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_rms);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_scaleXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_stdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumWXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn2D_variance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_mean);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Dbn3D_mean_s_stddev_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_rms);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleXYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_stdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWXZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_sumWZ2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Dbn3D_variance);
  Py_CLEAR(clear_module_state->__pyx_n_s_H1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_H2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___addBins_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___addBins_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___addBins_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___addBins_tuples);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___init5);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__addBins_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__addBins_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__addBins_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__addBins_tuples);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__init3_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__init5);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_addBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_addBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_areaErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_areas);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_binIndexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_fillBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_heightErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_heights);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_integralRange);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_integralTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_mergeBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_overflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_rebin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_rebinBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_rebinTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_relErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_sumWs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_toIntegral);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_totalDbn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_underflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo1D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D___init8);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D__init8);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_addBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_addBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_binIndexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_fillBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_heightErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_heights);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_relErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_sumWs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_totalDbn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_volumeErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_volumes);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xyMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xyRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xyStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xyStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_xyVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Histo2D_zVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D_area);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D_areaErr);
  Py_CLEAR(clear_module_state->__pyx_kp_s_HistoBin1D_g_g_sumw_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D_height);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D_heightErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin1D_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D_height);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D_heightErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D_volume);
  Py_CLEAR(clear_module_state->__pyx_n_s_HistoBin2D_volumeErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ImportError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Index);
  Py_CLEAR(clear_module_state->__pyx_n_s_IndexError);
  Py_CLEAR(clear_module_state->__pyx_n_s_Index___init);
  Py_CLEAR(clear_module_state->__pyx_n_s_Index___repr);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Index_of_a_file);
  Py_CLEAR(clear_module_state->__pyx_n_s_Index_toDict);
  Py_CLEAR(clear_module_state->__pyx_n_s_MemoryError);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Null_pointer_referenced_perhaps);
  Py_CLEAR(clear_module_state->__pyx_n_s_OrderedDict);
  Py_CLEAR(clear_module_state->__pyx_n_s_P1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_P2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_setX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_setXErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_setYErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Point1D_x_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_scaleXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_setX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_setXErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_setY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_setYErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_xErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Point2D_x_g_y_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_copy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_scaleXYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setXErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setYErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_setZErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_xErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_xMin);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Point3D_x_g_y_g_z_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_z);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point3D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_dim);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_errAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_errMap);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_errMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_errPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_rmVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_setErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_setErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_setErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_setErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_setVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_Point_val);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D___init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D___init5);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D__init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D__init3_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D__init5);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_addBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_addBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_binIndexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_fillBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_mergeBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_overflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_rebin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_rebinBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_rebinTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_sumWs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_totalDbn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_underflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yMeans);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yStdDevs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yStdErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile1D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D___init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D___init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D___init8);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D__init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D__init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D__init8);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_addBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_addBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_binIndexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_fillBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_sumWs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_totalDbn);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xyMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xyRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xyStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xyStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_xyVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zMeans);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zStdDevs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zStdErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Profile2D_zVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_kp_s_ProfileBin1D_g_g_sumw_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_mean);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_rms);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_stdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin1D_variance);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_kp_s_ProfileBin2D_g_g_g_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_mean);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_rms);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_stdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_sumWZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_sumWZ2);
  Py_CLEAR(clear_module_state->__pyx_n_s_ProfileBin2D_variance);
  Py_CLEAR(clear_module_state->__pyx_n_s_RuntimeError);
  Py_CLEAR(clear_module_state->__pyx_n_s_S1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_S2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_S3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_addPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_addPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_combineWith);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_hasValidErrorBreakdown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_numPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_parseVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_rmPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_rmPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_rmVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_transformX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_updateTotalUncertainty);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_variations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_writeVariationsToAnnot);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter1D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_addPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_addPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_combineWith);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_correlationMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_covarianceMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_hasValidErrorBreakdown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_numPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_parseVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_rmPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_rmPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_rmVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_transformX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_transformY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_updateTotalUncertainty);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_variations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_writeVariationsToAnnot);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter2D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D___setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D__mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_addPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_addPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_combineWith);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_covarianceMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_hasValidErrorBreakdown);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_numPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_rmPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_rmPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_rmVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleXYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_transformX);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_transformY);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_transformZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_updateTotalUncertainty);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_variations);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_writeVariationsToAnnot);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_Scatter3D_zVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_StringIO);
  Py_CLEAR(clear_module_state->__pyx_n_s_TypeError);
  Py_CLEAR(clear_module_state->__pyx_kp_s_Unsupported_bin_of_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_ValueError);
  Py_CLEAR(clear_module_state->__pyx_n_s_XY);
  Py_CLEAR(clear_module_state->__pyx_n_s_XYZ);
  Py_CLEAR(clear_module_state->__pyx_kp_s__11);
  Py_CLEAR(clear_module_state->__pyx_kp_b__2);
  Py_CLEAR(clear_module_state->__pyx_kp_s__2);
  Py_CLEAR(clear_module_state->__pyx_kp_u__3);
  Py_CLEAR(clear_module_state->__pyx_n_s__4);
  Py_CLEAR(clear_module_state->__pyx_kp_s__8);
  Py_CLEAR(clear_module_state->__pyx_n_s__977);
  Py_CLEAR(clear_module_state->__pyx_n_s_a);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBins_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBins_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBins_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_addBins_tuples);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPoint_explicit);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPoint_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_addPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_addressof);
  Py_CLEAR(clear_module_state->__pyx_n_s_adjacentTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_ana_objs);
  Py_CLEAR(clear_module_state->__pyx_n_s_annotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_annotations);
  Py_CLEAR(clear_module_state->__pyx_n_s_annotationsDict);
  Py_CLEAR(clear_module_state->__pyx_n_s_annotationsDict_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ao);
  Py_CLEAR(clear_module_state->__pyx_n_s_ao1);
  Py_CLEAR(clear_module_state->__pyx_n_s_ao2);
  Py_CLEAR(clear_module_state->__pyx_n_s_aobjects);
  Py_CLEAR(clear_module_state->__pyx_n_s_aolist);
  Py_CLEAR(clear_module_state->__pyx_n_s_area);
  Py_CLEAR(clear_module_state->__pyx_n_s_areaErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_areaErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_areas);
  Py_CLEAR(clear_module_state->__pyx_n_s_arg);
  Py_CLEAR(clear_module_state->__pyx_n_s_args);
  Py_CLEAR(clear_module_state->__pyx_n_s_array);
  Py_CLEAR(clear_module_state->__pyx_n_s_asdict);
  Py_CLEAR(clear_module_state->__pyx_n_s_asgrid);
  Py_CLEAR(clear_module_state->__pyx_n_s_asum);
  Py_CLEAR(clear_module_state->__pyx_n_s_asymm);
  Py_CLEAR(clear_module_state->__pyx_n_s_asyncio_coroutines);
  Py_CLEAR(clear_module_state->__pyx_n_s_attrgetter);
  Py_CLEAR(clear_module_state->__pyx_n_s_autostr);
  Py_CLEAR(clear_module_state->__pyx_n_s_ax);
  Py_CLEAR(clear_module_state->__pyx_n_s_ay);
  Py_CLEAR(clear_module_state->__pyx_n_s_az);
  Py_CLEAR(clear_module_state->__pyx_n_s_b);
  Py_CLEAR(clear_module_state->__pyx_n_s_begin);
  Py_CLEAR(clear_module_state->__pyx_n_s_bin);
  Py_CLEAR(clear_module_state->__pyx_n_s_binAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_binErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_binIndexAt);
  Py_CLEAR(clear_module_state->__pyx_n_s_binTotal);
  Py_CLEAR(clear_module_state->__pyx_n_s_binareadiv);
  Py_CLEAR(clear_module_state->__pyx_n_s_binedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_bins_or_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_binwidthdiv);
  Py_CLEAR(clear_module_state->__pyx_n_s_buffer);
  Py_CLEAR(clear_module_state->__pyx_n_s_bytestr_from_file);
  Py_CLEAR(clear_module_state->__pyx_n_s_cStringIO);
  Py_CLEAR(clear_module_state->__pyx_n_s_c_double);
  Py_CLEAR(clear_module_state->__pyx_n_s_callback);
  Py_CLEAR(clear_module_state->__pyx_n_s_cbin);
  Py_CLEAR(clear_module_state->__pyx_n_s_cbins);
  Py_CLEAR(clear_module_state->__pyx_n_s_cedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_class);
  Py_CLEAR(clear_module_state->__pyx_n_s_class_getitem);
  Py_CLEAR(clear_module_state->__pyx_n_s_clearAnnotations);
  Py_CLEAR(clear_module_state->__pyx_n_s_cline_in_traceback);
  Py_CLEAR(clear_module_state->__pyx_n_s_clone);
  Py_CLEAR(clear_module_state->__pyx_n_s_close);
  Py_CLEAR(clear_module_state->__pyx_n_s_collections);
  Py_CLEAR(clear_module_state->__pyx_n_s_combineWith);
  Py_CLEAR(clear_module_state->__pyx_n_s_compile);
  Py_CLEAR(clear_module_state->__pyx_n_s_copy);
  Py_CLEAR(clear_module_state->__pyx_kp_s_core_pyx);
  Py_CLEAR(clear_module_state->__pyx_n_s_corr);
  Py_CLEAR(clear_module_state->__pyx_n_s_correlation);
  Py_CLEAR(clear_module_state->__pyx_n_s_correlationMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_counter);
  Py_CLEAR(clear_module_state->__pyx_n_s_covMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_covariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_covarianceMatrix);
  Py_CLEAR(clear_module_state->__pyx_n_s_ctypes);
  Py_CLEAR(clear_module_state->__pyx_n_s_d);
  Py_CLEAR(clear_module_state->__pyx_n_s_da);
  Py_CLEAR(clear_module_state->__pyx_n_s_default);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict);
  Py_CLEAR(clear_module_state->__pyx_n_s_dict_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_dim);
  Py_CLEAR(clear_module_state->__pyx_kp_u_disable);
  Py_CLEAR(clear_module_state->__pyx_n_s_divide);
  Py_CLEAR(clear_module_state->__pyx_n_s_divideBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_doc);
  Py_CLEAR(clear_module_state->__pyx_n_s_dump);
  Py_CLEAR(clear_module_state->__pyx_n_s_dx);
  Py_CLEAR(clear_module_state->__pyx_n_s_e);
  Py_CLEAR(clear_module_state->__pyx_n_s_edge);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges);
  Py_CLEAR(clear_module_state->__pyx_n_s_edges_or_bins);
  Py_CLEAR(clear_module_state->__pyx_n_s_effNumEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_efficiency);
  Py_CLEAR(clear_module_state->__pyx_n_s_elem);
  Py_CLEAR(clear_module_state->__pyx_kp_u_enable);
  Py_CLEAR(clear_module_state->__pyx_n_s_encode);
  Py_CLEAR(clear_module_state->__pyx_n_s_end);
  Py_CLEAR(clear_module_state->__pyx_n_s_enter);
  Py_CLEAR(clear_module_state->__pyx_n_s_err);
  Py_CLEAR(clear_module_state->__pyx_n_s_errAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_errMap);
  Py_CLEAR(clear_module_state->__pyx_n_s_errMap_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_errMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_errPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_errW);
  Py_CLEAR(clear_module_state->__pyx_n_s_err_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_errs);
  Py_CLEAR(clear_module_state->__pyx_n_s_es);
  Py_CLEAR(clear_module_state->__pyx_n_s_exit);
  Py_CLEAR(clear_module_state->__pyx_n_s_f);
  Py_CLEAR(clear_module_state->__pyx_n_s_file_or_filename);
  Py_CLEAR(clear_module_state->__pyx_n_s_filename);
  Py_CLEAR(clear_module_state->__pyx_n_s_fill);
  Py_CLEAR(clear_module_state->__pyx_n_s_fillBin);
  Py_CLEAR(clear_module_state->__pyx_n_s_fn);
  Py_CLEAR(clear_module_state->__pyx_n_s_foci);
  Py_CLEAR(clear_module_state->__pyx_n_s_format);
  Py_CLEAR(clear_module_state->__pyx_n_s_fptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_fraction);
  Py_CLEAR(clear_module_state->__pyx_kp_u_gc);
  Py_CLEAR(clear_module_state->__pyx_n_s_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_getDataPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_getLibPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_getYodaDataPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_getstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_h);
  Py_CLEAR(clear_module_state->__pyx_n_s_h_binsizediv);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_hasValidErrorBreakdown);
  Py_CLEAR(clear_module_state->__pyx_n_s_height);
  Py_CLEAR(clear_module_state->__pyx_n_s_heightErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_heightErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_heights);
  Py_CLEAR(clear_module_state->__pyx_n_s_high);
  Py_CLEAR(clear_module_state->__pyx_n_s_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_ia);
  Py_CLEAR(clear_module_state->__pyx_n_s_ib);
  Py_CLEAR(clear_module_state->__pyx_n_s_idx);
  Py_CLEAR(clear_module_state->__pyx_n_s_idxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_ignoreOffDiagonalTerms);
  Py_CLEAR(clear_module_state->__pyx_n_s_import);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_AnalysisObject_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Bin_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Counter_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Dbn0D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Dbn1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Dbn2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Dbn3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Functions_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Histo1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Histo2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_HistoBin1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_HistoBin2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_IO_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Point1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Point2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Point3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Point_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Profile1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Profile2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_ProfileBin1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_ProfileBin2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Scatter1D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Scatter2D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_Scatter3D_pyx);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin1D_Dbn1D_py);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin1D_Dbn2D_py);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin2D_Dbn2D_py);
  Py_CLEAR(clear_module_state->__pyx_kp_s_include_generated_Bin2D_Dbn3D_py);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeoverflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeoverflows);
  Py_CLEAR(clear_module_state->__pyx_n_s_includeunderflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_index_between);
  Py_CLEAR(clear_module_state->__pyx_n_s_index_map);
  Py_CLEAR(clear_module_state->__pyx_n_s_init);
  Py_CLEAR(clear_module_state->__pyx_n_s_init2);
  Py_CLEAR(clear_module_state->__pyx_n_s_init3);
  Py_CLEAR(clear_module_state->__pyx_n_s_init4);
  Py_CLEAR(clear_module_state->__pyx_n_s_init5);
  Py_CLEAR(clear_module_state->__pyx_n_s_init8);
  Py_CLEAR(clear_module_state->__pyx_n_s_init_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_init_3);
  Py_CLEAR(clear_module_state->__pyx_n_s_init_subclass);
  Py_CLEAR(clear_module_state->__pyx_n_s_initializing);
  Py_CLEAR(clear_module_state->__pyx_n_s_integral);
  Py_CLEAR(clear_module_state->__pyx_n_s_integralRange);
  Py_CLEAR(clear_module_state->__pyx_n_s_integralTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_io);
  Py_CLEAR(clear_module_state->__pyx_n_s_is_coroutine);
  Py_CLEAR(clear_module_state->__pyx_kp_u_isenabled);
  Py_CLEAR(clear_module_state->__pyx_n_s_iss);
  Py_CLEAR(clear_module_state->__pyx_n_s_istxt);
  Py_CLEAR(clear_module_state->__pyx_n_s_items);
  Py_CLEAR(clear_module_state->__pyx_n_s_iter);
  Py_CLEAR(clear_module_state->__pyx_n_s_iterable);
  Py_CLEAR(clear_module_state->__pyx_n_s_iteritems);
  Py_CLEAR(clear_module_state->__pyx_n_s_itertools);
  Py_CLEAR(clear_module_state->__pyx_n_s_ix);
  Py_CLEAR(clear_module_state->__pyx_n_s_j);
  Py_CLEAR(clear_module_state->__pyx_n_s_k);
  Py_CLEAR(clear_module_state->__pyx_n_s_key);
  Py_CLEAR(clear_module_state->__pyx_n_s_kwargs);
  Py_CLEAR(clear_module_state->__pyx_n_s_linspace);
  Py_CLEAR(clear_module_state->__pyx_n_s_logspace);
  Py_CLEAR(clear_module_state->__pyx_n_s_low);
  Py_CLEAR(clear_module_state->__pyx_n_s_lower);
  Py_CLEAR(clear_module_state->__pyx_n_s_main);
  Py_CLEAR(clear_module_state->__pyx_n_s_max);
  Py_CLEAR(clear_module_state->__pyx_n_s_mean);
  Py_CLEAR(clear_module_state->__pyx_n_s_merge);
  Py_CLEAR(clear_module_state->__pyx_n_s_mergeBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_metaclass);
  Py_CLEAR(clear_module_state->__pyx_n_s_min);
  Py_CLEAR(clear_module_state->__pyx_n_s_mkIndexYODA);
  Py_CLEAR(clear_module_state->__pyx_n_s_mkScatter);
  Py_CLEAR(clear_module_state->__pyx_n_s_mknp);
  Py_CLEAR(clear_module_state->__pyx_n_s_mktxtifstr);
  Py_CLEAR(clear_module_state->__pyx_n_s_module);
  Py_CLEAR(clear_module_state->__pyx_n_s_n);
  Py_CLEAR(clear_module_state->__pyx_kp_s_n_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_name_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_nbins);
  Py_CLEAR(clear_module_state->__pyx_n_s_new);
  Py_CLEAR(clear_module_state->__pyx_n_s_normalize);
  Py_CLEAR(clear_module_state->__pyx_n_s_normto);
  Py_CLEAR(clear_module_state->__pyx_n_s_nsample);
  Py_CLEAR(clear_module_state->__pyx_n_s_numBins);
  Py_CLEAR(clear_module_state->__pyx_n_s_numBinsX);
  Py_CLEAR(clear_module_state->__pyx_n_s_numBinsY);
  Py_CLEAR(clear_module_state->__pyx_n_s_numEntries);
  Py_CLEAR(clear_module_state->__pyx_n_s_numPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_numpy);
  Py_CLEAR(clear_module_state->__pyx_n_s_nxbins);
  Py_CLEAR(clear_module_state->__pyx_n_s_nybins);
  Py_CLEAR(clear_module_state->__pyx_n_s_oflow_binwidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_open);
  Py_CLEAR(clear_module_state->__pyx_n_s_operator);
  Py_CLEAR(clear_module_state->__pyx_n_s_oss);
  Py_CLEAR(clear_module_state->__pyx_n_s_other);
  Py_CLEAR(clear_module_state->__pyx_n_s_others);
  Py_CLEAR(clear_module_state->__pyx_n_s_overflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_p);
  Py_CLEAR(clear_module_state->__pyx_n_s_p1ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_p_usestddev);
  Py_CLEAR(clear_module_state->__pyx_n_s_parseVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_parseyaml);
  Py_CLEAR(clear_module_state->__pyx_n_s_path);
  Py_CLEAR(clear_module_state->__pyx_n_s_pattern_check);
  Py_CLEAR(clear_module_state->__pyx_n_s_pattern_check_locals_genexpr);
  Py_CLEAR(clear_module_state->__pyx_n_s_patterns);
  Py_CLEAR(clear_module_state->__pyx_n_s_pdfspace);
  Py_CLEAR(clear_module_state->__pyx_n_s_point);
  Py_CLEAR(clear_module_state->__pyx_n_s_points);
  Py_CLEAR(clear_module_state->__pyx_n_s_precision);
  Py_CLEAR(clear_module_state->__pyx_n_s_prepare);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_state);
  Py_CLEAR(clear_module_state->__pyx_n_s_pyx_vtable);
  Py_CLEAR(clear_module_state->__pyx_n_s_qualname);
  Py_CLEAR(clear_module_state->__pyx_n_s_range);
  Py_CLEAR(clear_module_state->__pyx_n_s_rb);
  Py_CLEAR(clear_module_state->__pyx_n_s_re);
  Py_CLEAR(clear_module_state->__pyx_n_s_read);
  Py_CLEAR(clear_module_state->__pyx_n_s_readAIDA);
  Py_CLEAR(clear_module_state->__pyx_n_s_readFLAT);
  Py_CLEAR(clear_module_state->__pyx_n_s_readYODA);
  Py_CLEAR(clear_module_state->__pyx_n_s_read_error_pair);
  Py_CLEAR(clear_module_state->__pyx_n_s_read_symmetric);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebin);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinBy);
  Py_CLEAR(clear_module_state->__pyx_n_s_rebinTo);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_reduce_ex);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrW);
  Py_CLEAR(clear_module_state->__pyx_n_s_relErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_repeat);
  Py_CLEAR(clear_module_state->__pyx_n_s_replace);
  Py_CLEAR(clear_module_state->__pyx_n_s_repr);
  Py_CLEAR(clear_module_state->__pyx_n_s_repr_string);
  Py_CLEAR(clear_module_state->__pyx_n_s_reset);
  Py_CLEAR(clear_module_state->__pyx_n_s_reshape);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmPoint);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmPoints);
  Py_CLEAR(clear_module_state->__pyx_n_s_rmVariations);
  Py_CLEAR(clear_module_state->__pyx_n_s_rms);
  Py_CLEAR(clear_module_state->__pyx_n_s_row);
  Py_CLEAR(clear_module_state->__pyx_n_s_rtn);
  Py_CLEAR(clear_module_state->__pyx_n_s_s);
  Py_CLEAR(clear_module_state->__pyx_n_s_s1);
  Py_CLEAR(clear_module_state->__pyx_n_s_s2);
  Py_CLEAR(clear_module_state->__pyx_n_s_s2ptr);
  Py_CLEAR(clear_module_state->__pyx_n_s_s3);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_d_bins_sumw_0_2g);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_d_bins_sumw_2g);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_d_points);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_s_sumw_0_2g_err_s);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_x_g_g);
  Py_CLEAR(clear_module_state->__pyx_kp_s_s_x_g_g_y_g_g);
  Py_CLEAR(clear_module_state->__pyx_n_s_sample);
  Py_CLEAR(clear_module_state->__pyx_n_s_sample1);
  Py_CLEAR(clear_module_state->__pyx_n_s_sample2);
  Py_CLEAR(clear_module_state->__pyx_n_s_scale);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleW);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleX);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleXYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleY);
  Py_CLEAR(clear_module_state->__pyx_n_s_scaleZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_sd);
  Py_CLEAR(clear_module_state->__pyx_n_s_search);
  Py_CLEAR(clear_module_state->__pyx_n_s_seek);
  Py_CLEAR(clear_module_state->__pyx_n_s_self);
  Py_CLEAR(clear_module_state->__pyx_kp_s_self__ptr_cannot_be_converted_to);
  Py_CLEAR(clear_module_state->__pyx_n_s_send);
  Py_CLEAR(clear_module_state->__pyx_n_s_set);
  Py_CLEAR(clear_module_state->__pyx_n_s_setAnnotation);
  Py_CLEAR(clear_module_state->__pyx_n_s_setErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_setErrMinus);
  Py_CLEAR(clear_module_state->__pyx_n_s_setErrPlus);
  Py_CLEAR(clear_module_state->__pyx_n_s_setErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_setPath);
  Py_CLEAR(clear_module_state->__pyx_n_s_setTitle);
  Py_CLEAR(clear_module_state->__pyx_n_s_setVal);
  Py_CLEAR(clear_module_state->__pyx_n_s_setX);
  Py_CLEAR(clear_module_state->__pyx_n_s_setXErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_setY);
  Py_CLEAR(clear_module_state->__pyx_n_s_setYErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_setZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_setZErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_set_name);
  Py_CLEAR(clear_module_state->__pyx_n_s_setstate);
  Py_CLEAR(clear_module_state->__pyx_n_s_setstate_cython);
  Py_CLEAR(clear_module_state->__pyx_n_s_sigma_i);
  Py_CLEAR(clear_module_state->__pyx_n_s_sigma_j);
  Py_CLEAR(clear_module_state->__pyx_n_s_source);
  Py_CLEAR(clear_module_state->__pyx_n_s_spec);
  Py_CLEAR(clear_module_state->__pyx_n_s_stdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_stdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_stdin);
  Py_CLEAR(clear_module_state->__pyx_n_s_stdout);
  Py_CLEAR(clear_module_state->__pyx_n_s_str);
  Py_CLEAR(clear_module_state->__pyx_n_s_str_to_file);
  Py_CLEAR(clear_module_state->__pyx_kp_s_stringsource);
  Py_CLEAR(clear_module_state->__pyx_n_s_strip);
  Py_CLEAR(clear_module_state->__pyx_n_s_sum);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumW);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumW2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWX);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWX2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWXY);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWXZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWY);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWY2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWYZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWZ2);
  Py_CLEAR(clear_module_state->__pyx_n_s_sumWs);
  Py_CLEAR(clear_module_state->__pyx_n_s_super);
  Py_CLEAR(clear_module_state->__pyx_n_s_sys);
  Py_CLEAR(clear_module_state->__pyx_n_s_test);
  Py_CLEAR(clear_module_state->__pyx_n_s_throw);
  Py_CLEAR(clear_module_state->__pyx_n_s_title);
  Py_CLEAR(clear_module_state->__pyx_n_s_toDict);
  Py_CLEAR(clear_module_state->__pyx_n_s_toIntegral);
  Py_CLEAR(clear_module_state->__pyx_n_s_totalDbn);
  Py_CLEAR(clear_module_state->__pyx_n_s_transformX);
  Py_CLEAR(clear_module_state->__pyx_n_s_transformY);
  Py_CLEAR(clear_module_state->__pyx_n_s_transformZ);
  Py_CLEAR(clear_module_state->__pyx_n_s_try_loop);
  Py_CLEAR(clear_module_state->__pyx_n_s_tuples);
  Py_CLEAR(clear_module_state->__pyx_n_s_type);
  Py_CLEAR(clear_module_state->__pyx_n_s_uflow_binwidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_underflow);
  Py_CLEAR(clear_module_state->__pyx_n_s_unique);
  Py_CLEAR(clear_module_state->__pyx_n_s_unpatterns);
  Py_CLEAR(clear_module_state->__pyx_n_s_updateTotalUncertainty);
  Py_CLEAR(clear_module_state->__pyx_n_s_upper);
  Py_CLEAR(clear_module_state->__pyx_n_s_usefocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_usestddev);
  Py_CLEAR(clear_module_state->__pyx_kp_s_utf_8);
  Py_CLEAR(clear_module_state->__pyx_n_s_util);
  Py_CLEAR(clear_module_state->__pyx_n_s_v);
  Py_CLEAR(clear_module_state->__pyx_n_s_val);
  Py_CLEAR(clear_module_state->__pyx_n_s_values);
  Py_CLEAR(clear_module_state->__pyx_n_s_var);
  Py_CLEAR(clear_module_state->__pyx_n_s_variance);
  Py_CLEAR(clear_module_state->__pyx_n_s_variations);
  Py_CLEAR(clear_module_state->__pyx_n_s_vars);
  Py_CLEAR(clear_module_state->__pyx_n_s_vec);
  Py_CLEAR(clear_module_state->__pyx_n_s_version);
  Py_CLEAR(clear_module_state->__pyx_n_s_version_info);
  Py_CLEAR(clear_module_state->__pyx_n_s_vol);
  Py_CLEAR(clear_module_state->__pyx_n_s_volErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_volume);
  Py_CLEAR(clear_module_state->__pyx_n_s_volumeErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_volumeErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_volumes);
  Py_CLEAR(clear_module_state->__pyx_n_s_w);
  Py_CLEAR(clear_module_state->__pyx_n_s_weight);
  Py_CLEAR(clear_module_state->__pyx_n_s_write);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeAIDA);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeFLAT);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeVariationsToAnnotations);
  Py_CLEAR(clear_module_state->__pyx_n_s_writeYODA);
  Py_CLEAR(clear_module_state->__pyx_n_s_x);
  Py_CLEAR(clear_module_state->__pyx_n_s_xEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_xErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_xFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_xFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_xMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_xRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_xStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_xStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_xVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_xVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_xWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_xWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_xcuts);
  Py_CLEAR(clear_module_state->__pyx_n_s_xcuts_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_xedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_xerrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_xhigh);
  Py_CLEAR(clear_module_state->__pyx_n_s_xlow);
  Py_CLEAR(clear_module_state->__pyx_n_s_xmax);
  Py_CLEAR(clear_module_state->__pyx_n_s_xmin);
  Py_CLEAR(clear_module_state->__pyx_n_s_xs);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_xyWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_y);
  Py_CLEAR(clear_module_state->__pyx_n_s_yEdges);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrAvgs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_yFoci);
  Py_CLEAR(clear_module_state->__pyx_n_s_yFocus);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMean);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMeans);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMid);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMids);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_yMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_yRMS);
  Py_CLEAR(clear_module_state->__pyx_n_s_yStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_yStdDevs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_yStdErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_yVariance);
  Py_CLEAR(clear_module_state->__pyx_n_s_yWidth);
  Py_CLEAR(clear_module_state->__pyx_n_s_yWidths);
  Py_CLEAR(clear_module_state->__pyx_n_s_ycuts);
  Py_CLEAR(clear_module_state->__pyx_n_s_ycuts_2);
  Py_CLEAR(clear_module_state->__pyx_n_s_yedges);
  Py_CLEAR(clear_module_state->__pyx_n_s_yerrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_yhigh);
  Py_CLEAR(clear_module_state->__pyx_n_s_ylow);
  Py_CLEAR(clear_module_state->__pyx_n_b_yoda);
  Py_CLEAR(clear_module_state->__pyx_n_s_yoda);
  Py_CLEAR(clear_module_state->__pyx_n_s_yoda_core);
  Py_CLEAR(clear_module_state->__pyx_n_s_yoda_util);
  Py_CLEAR(clear_module_state->__pyx_n_s_ys);
  Py_CLEAR(clear_module_state->__pyx_n_s_z);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrAvg);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zErrsFromSource);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMax);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMaxs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMeans);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMin);
  Py_CLEAR(clear_module_state->__pyx_n_s_zMins);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdDev);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdDevs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdErr);
  Py_CLEAR(clear_module_state->__pyx_n_s_zStdErrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zVals);
  Py_CLEAR(clear_module_state->__pyx_n_s_zerrs);
  Py_CLEAR(clear_module_state->__pyx_n_s_zip);
  Py_CLEAR(clear_module_state->__pyx_n_s_zs);
  Py_CLEAR(clear_module_state->__pyx_float_0_);
  Py_CLEAR(clear_module_state->__pyx_float_2_);
  Py_CLEAR(clear_module_state->__pyx_float_0_5);
  Py_CLEAR(clear_module_state->__pyx_float_1_0);
  Py_CLEAR(clear_module_state->__pyx_float_neg_1_);
  Py_CLEAR(clear_module_state->__pyx_int_0);
  Py_CLEAR(clear_module_state->__pyx_int_1);
  Py_CLEAR(clear_module_state->__pyx_int_2);
  Py_CLEAR(clear_module_state->__pyx_int_3);
  Py_CLEAR(clear_module_state->__pyx_int_10000);
  Py_CLEAR(clear_module_state->__pyx_int_neg_1);
  Py_CLEAR(clear_module_state->__pyx_tuple_);
  Py_CLEAR(clear_module_state->__pyx_slice__5);
  Py_CLEAR(clear_module_state->__pyx_slice__6);
  Py_CLEAR(clear_module_state->__pyx_tuple__7);
  Py_CLEAR(clear_module_state->__pyx_tuple__9);
  Py_CLEAR(clear_module_state->__pyx_tuple__10);
  Py_CLEAR(clear_module_state->__pyx_tuple__12);
  Py_CLEAR(clear_module_state->__pyx_tuple__13);
  Py_CLEAR(clear_module_state->__pyx_tuple__18);
  Py_CLEAR(clear_module_state->__pyx_tuple__21);
  Py_CLEAR(clear_module_state->__pyx_tuple__23);
  Py_CLEAR(clear_module_state->__pyx_tuple__24);
  Py_CLEAR(clear_module_state->__pyx_tuple__33);
  Py_CLEAR(clear_module_state->__pyx_tuple__37);
  Py_CLEAR(clear_module_state->__pyx_tuple__40);
  Py_CLEAR(clear_module_state->__pyx_tuple__59);
  Py_CLEAR(clear_module_state->__pyx_tuple__63);
  Py_CLEAR(clear_module_state->__pyx_tuple__65);
  Py_CLEAR(clear_module_state->__pyx_tuple__86);
  Py_CLEAR(clear_module_state->__pyx_tuple__92);
  Py_CLEAR(clear_module_state->__pyx_tuple__94);
  Py_CLEAR(clear_module_state->__pyx_tuple__129);
  Py_CLEAR(clear_module_state->__pyx_tuple__131);
  Py_CLEAR(clear_module_state->__pyx_tuple__133);
  Py_CLEAR(clear_module_state->__pyx_tuple__156);
  Py_CLEAR(clear_module_state->__pyx_tuple__194);
  Py_CLEAR(clear_module_state->__pyx_tuple__196);
  Py_CLEAR(clear_module_state->__pyx_tuple__198);
  Py_CLEAR(clear_module_state->__pyx_tuple__200);
  Py_CLEAR(clear_module_state->__pyx_tuple__201);
  Py_CLEAR(clear_module_state->__pyx_tuple__203);
  Py_CLEAR(clear_module_state->__pyx_tuple__207);
  Py_CLEAR(clear_module_state->__pyx_tuple__211);
  Py_CLEAR(clear_module_state->__pyx_tuple__214);
  Py_CLEAR(clear_module_state->__pyx_tuple__218);
  Py_CLEAR(clear_module_state->__pyx_tuple__220);
  Py_CLEAR(clear_module_state->__pyx_tuple__221);
  Py_CLEAR(clear_module_state->__pyx_tuple__223);
  Py_CLEAR(clear_module_state->__pyx_tuple__228);
  Py_CLEAR(clear_module_state->__pyx_tuple__233);
  Py_CLEAR(clear_module_state->__pyx_tuple__235);
  Py_CLEAR(clear_module_state->__pyx_tuple__236);
  Py_CLEAR(clear_module_state->__pyx_tuple__238);
  Py_CLEAR(clear_module_state->__pyx_tuple__250);
  Py_CLEAR(clear_module_state->__pyx_tuple__252);
  Py_CLEAR(clear_module_state->__pyx_tuple__258);
  Py_CLEAR(clear_module_state->__pyx_tuple__262);
  Py_CLEAR(clear_module_state->__pyx_tuple__264);
  Py_CLEAR(clear_module_state->__pyx_tuple__266);
  Py_CLEAR(clear_module_state->__pyx_tuple__268);
  Py_CLEAR(clear_module_state->__pyx_tuple__270);
  Py_CLEAR(clear_module_state->__pyx_tuple__272);
  Py_CLEAR(clear_module_state->__pyx_tuple__275);
  Py_CLEAR(clear_module_state->__pyx_tuple__277);
  Py_CLEAR(clear_module_state->__pyx_tuple__278);
  Py_CLEAR(clear_module_state->__pyx_tuple__280);
  Py_CLEAR(clear_module_state->__pyx_tuple__282);
  Py_CLEAR(clear_module_state->__pyx_tuple__284);
  Py_CLEAR(clear_module_state->__pyx_tuple__285);
  Py_CLEAR(clear_module_state->__pyx_tuple__287);
  Py_CLEAR(clear_module_state->__pyx_tuple__288);
  Py_CLEAR(clear_module_state->__pyx_tuple__290);
  Py_CLEAR(clear_module_state->__pyx_tuple__294);
  Py_CLEAR(clear_module_state->__pyx_tuple__299);
  Py_CLEAR(clear_module_state->__pyx_tuple__301);
  Py_CLEAR(clear_module_state->__pyx_tuple__305);
  Py_CLEAR(clear_module_state->__pyx_tuple__309);
  Py_CLEAR(clear_module_state->__pyx_tuple__315);
  Py_CLEAR(clear_module_state->__pyx_tuple__324);
  Py_CLEAR(clear_module_state->__pyx_tuple__329);
  Py_CLEAR(clear_module_state->__pyx_tuple__344);
  Py_CLEAR(clear_module_state->__pyx_tuple__355);
  Py_CLEAR(clear_module_state->__pyx_tuple__357);
  Py_CLEAR(clear_module_state->__pyx_tuple__362);
  Py_CLEAR(clear_module_state->__pyx_tuple__364);
  Py_CLEAR(clear_module_state->__pyx_tuple__365);
  Py_CLEAR(clear_module_state->__pyx_tuple__383);
  Py_CLEAR(clear_module_state->__pyx_tuple__385);
  Py_CLEAR(clear_module_state->__pyx_tuple__493);
  Py_CLEAR(clear_module_state->__pyx_tuple__495);
  Py_CLEAR(clear_module_state->__pyx_tuple__500);
  Py_CLEAR(clear_module_state->__pyx_tuple__536);
  Py_CLEAR(clear_module_state->__pyx_tuple__538);
  Py_CLEAR(clear_module_state->__pyx_tuple__540);
  Py_CLEAR(clear_module_state->__pyx_tuple__542);
  Py_CLEAR(clear_module_state->__pyx_tuple__549);
  Py_CLEAR(clear_module_state->__pyx_tuple__551);
  Py_CLEAR(clear_module_state->__pyx_tuple__554);
  Py_CLEAR(clear_module_state->__pyx_tuple__556);
  Py_CLEAR(clear_module_state->__pyx_tuple__558);
  Py_CLEAR(clear_module_state->__pyx_tuple__559);
  Py_CLEAR(clear_module_state->__pyx_tuple__574);
  Py_CLEAR(clear_module_state->__pyx_tuple__576);
  Py_CLEAR(clear_module_state->__pyx_tuple__581);
  Py_CLEAR(clear_module_state->__pyx_tuple__594);
  Py_CLEAR(clear_module_state->__pyx_tuple__630);
  Py_CLEAR(clear_module_state->__pyx_tuple__632);
  Py_CLEAR(clear_module_state->__pyx_tuple__658);
  Py_CLEAR(clear_module_state->__pyx_tuple__662);
  Py_CLEAR(clear_module_state->__pyx_tuple__664);
  Py_CLEAR(clear_module_state->__pyx_tuple__673);
  Py_CLEAR(clear_module_state->__pyx_tuple__675);
  Py_CLEAR(clear_module_state->__pyx_tuple__677);
  Py_CLEAR(clear_module_state->__pyx_tuple__678);
  Py_CLEAR(clear_module_state->__pyx_tuple__680);
  Py_CLEAR(clear_module_state->__pyx_tuple__687);
  Py_CLEAR(clear_module_state->__pyx_tuple__689);
  Py_CLEAR(clear_module_state->__pyx_tuple__692);
  Py_CLEAR(clear_module_state->__pyx_tuple__697);
  Py_CLEAR(clear_module_state->__pyx_tuple__699);
  Py_CLEAR(clear_module_state->__pyx_tuple__704);
  Py_CLEAR(clear_module_state->__pyx_tuple__718);
  Py_CLEAR(clear_module_state->__pyx_tuple__761);
  Py_CLEAR(clear_module_state->__pyx_tuple__763);
  Py_CLEAR(clear_module_state->__pyx_tuple__765);
  Py_CLEAR(clear_module_state->__pyx_tuple__767);
  Py_CLEAR(clear_module_state->__pyx_tuple__769);
  Py_CLEAR(clear_module_state->__pyx_tuple__774);
  Py_CLEAR(clear_module_state->__pyx_tuple__781);
  Py_CLEAR(clear_module_state->__pyx_tuple__783);
  Py_CLEAR(clear_module_state->__pyx_tuple__785);
  Py_CLEAR(clear_module_state->__pyx_tuple__786);
  Py_CLEAR(clear_module_state->__pyx_tuple__788);
  Py_CLEAR(clear_module_state->__pyx_tuple__790);
  Py_CLEAR(clear_module_state->__pyx_tuple__792);
  Py_CLEAR(clear_module_state->__pyx_tuple__794);
  Py_CLEAR(clear_module_state->__pyx_tuple__796);
  Py_CLEAR(clear_module_state->__pyx_tuple__800);
  Py_CLEAR(clear_module_state->__pyx_tuple__805);
  Py_CLEAR(clear_module_state->__pyx_tuple__808);
  Py_CLEAR(clear_module_state->__pyx_tuple__826);
  Py_CLEAR(clear_module_state->__pyx_tuple__828);
  Py_CLEAR(clear_module_state->__pyx_tuple__837);
  Py_CLEAR(clear_module_state->__pyx_tuple__848);
  Py_CLEAR(clear_module_state->__pyx_tuple__851);
  Py_CLEAR(clear_module_state->__pyx_tuple__871);
  Py_CLEAR(clear_module_state->__pyx_tuple__878);
  Py_CLEAR(clear_module_state->__pyx_tuple__880);
  Py_CLEAR(clear_module_state->__pyx_tuple__886);
  Py_CLEAR(clear_module_state->__pyx_tuple__892);
  Py_CLEAR(clear_module_state->__pyx_tuple__924);
  Py_CLEAR(clear_module_state->__pyx_tuple__926);
  Py_CLEAR(clear_module_state->__pyx_tuple__927);
  Py_CLEAR(clear_module_state->__pyx_tuple__929);
  Py_CLEAR(clear_module_state->__pyx_tuple__932);
  Py_CLEAR(clear_module_state->__pyx_tuple__934);
  Py_CLEAR(clear_module_state->__pyx_tuple__935);
  Py_CLEAR(clear_module_state->__pyx_tuple__937);
  Py_CLEAR(clear_module_state->__pyx_tuple__939);
  Py_CLEAR(clear_module_state->__pyx_tuple__942);
  Py_CLEAR(clear_module_state->__pyx_tuple__944);
  Py_CLEAR(clear_module_state->__pyx_tuple__946);
  Py_CLEAR(clear_module_state->__pyx_tuple__948);
  Py_CLEAR(clear_module_state->__pyx_tuple__951);
  Py_CLEAR(clear_module_state->__pyx_tuple__953);
  Py_CLEAR(clear_module_state->__pyx_tuple__954);
  Py_CLEAR(clear_module_state->__pyx_tuple__956);
  Py_CLEAR(clear_module_state->__pyx_tuple__958);
  Py_CLEAR(clear_module_state->__pyx_tuple__960);
  Py_CLEAR(clear_module_state->__pyx_tuple__961);
  Py_CLEAR(clear_module_state->__pyx_tuple__963);
  Py_CLEAR(clear_module_state->__pyx_tuple__964);
  Py_CLEAR(clear_module_state->__pyx_tuple__966);
  Py_CLEAR(clear_module_state->__pyx_tuple__968);
  Py_CLEAR(clear_module_state->__pyx_tuple__970);
  Py_CLEAR(clear_module_state->__pyx_tuple__971);
  Py_CLEAR(clear_module_state->__pyx_tuple__975);
  Py_CLEAR(clear_module_state->__pyx_codeobj__14);
  Py_CLEAR(clear_module_state->__pyx_codeobj__15);
  Py_CLEAR(clear_module_state->__pyx_codeobj__16);
  Py_CLEAR(clear_module_state->__pyx_codeobj__17);
  Py_CLEAR(clear_module_state->__pyx_codeobj__19);
  Py_CLEAR(clear_module_state->__pyx_codeobj__20);
  Py_CLEAR(clear_module_state->__pyx_codeobj__22);
  Py_CLEAR(clear_module_state->__pyx_codeobj__25);
  Py_CLEAR(clear_module_state->__pyx_codeobj__26);
  Py_CLEAR(clear_module_state->__pyx_codeobj__27);
  Py_CLEAR(clear_module_state->__pyx_codeobj__28);
  Py_CLEAR(clear_module_state->__pyx_codeobj__29);
  Py_CLEAR(clear_module_state->__pyx_codeobj__30);
  Py_CLEAR(clear_module_state->__pyx_codeobj__31);
  Py_CLEAR(clear_module_state->__pyx_codeobj__32);
  Py_CLEAR(clear_module_state->__pyx_codeobj__34);
  Py_CLEAR(clear_module_state->__pyx_codeobj__35);
  Py_CLEAR(clear_module_state->__pyx_codeobj__36);
  Py_CLEAR(clear_module_state->__pyx_codeobj__38);
  Py_CLEAR(clear_module_state->__pyx_codeobj__39);
  Py_CLEAR(clear_module_state->__pyx_codeobj__41);
  Py_CLEAR(clear_module_state->__pyx_codeobj__42);
  Py_CLEAR(clear_module_state->__pyx_codeobj__43);
  Py_CLEAR(clear_module_state->__pyx_codeobj__44);
  Py_CLEAR(clear_module_state->__pyx_codeobj__45);
  Py_CLEAR(clear_module_state->__pyx_codeobj__46);
  Py_CLEAR(clear_module_state->__pyx_codeobj__47);
  Py_CLEAR(clear_module_state->__pyx_codeobj__48);
  Py_CLEAR(clear_module_state->__pyx_codeobj__49);
  Py_CLEAR(clear_module_state->__pyx_codeobj__50);
  Py_CLEAR(clear_module_state->__pyx_codeobj__51);
  Py_CLEAR(clear_module_state->__pyx_codeobj__52);
  Py_CLEAR(clear_module_state->__pyx_codeobj__53);
  Py_CLEAR(clear_module_state->__pyx_codeobj__54);
  Py_CLEAR(clear_module_state->__pyx_codeobj__55);
  Py_CLEAR(clear_module_state->__pyx_codeobj__56);
  Py_CLEAR(clear_module_state->__pyx_codeobj__57);
  Py_CLEAR(clear_module_state->__pyx_codeobj__58);
  Py_CLEAR(clear_module_state->__pyx_codeobj__60);
  Py_CLEAR(clear_module_state->__pyx_codeobj__61);
  Py_CLEAR(clear_module_state->__pyx_codeobj__62);
  Py_CLEAR(clear_module_state->__pyx_codeobj__64);
  Py_CLEAR(clear_module_state->__pyx_codeobj__66);
  Py_CLEAR(clear_module_state->__pyx_codeobj__67);
  Py_CLEAR(clear_module_state->__pyx_codeobj__68);
  Py_CLEAR(clear_module_state->__pyx_codeobj__69);
  Py_CLEAR(clear_module_state->__pyx_codeobj__70);
  Py_CLEAR(clear_module_state->__pyx_codeobj__71);
  Py_CLEAR(clear_module_state->__pyx_codeobj__72);
  Py_CLEAR(clear_module_state->__pyx_codeobj__73);
  Py_CLEAR(clear_module_state->__pyx_codeobj__74);
  Py_CLEAR(clear_module_state->__pyx_codeobj__75);
  Py_CLEAR(clear_module_state->__pyx_codeobj__76);
  Py_CLEAR(clear_module_state->__pyx_codeobj__77);
  Py_CLEAR(clear_module_state->__pyx_codeobj__78);
  Py_CLEAR(clear_module_state->__pyx_codeobj__79);
  Py_CLEAR(clear_module_state->__pyx_codeobj__80);
  Py_CLEAR(clear_module_state->__pyx_codeobj__81);
  Py_CLEAR(clear_module_state->__pyx_codeobj__82);
  Py_CLEAR(clear_module_state->__pyx_codeobj__83);
  Py_CLEAR(clear_module_state->__pyx_codeobj__84);
  Py_CLEAR(clear_module_state->__pyx_codeobj__85);
  Py_CLEAR(clear_module_state->__pyx_codeobj__87);
  Py_CLEAR(clear_module_state->__pyx_codeobj__88);
  Py_CLEAR(clear_module_state->__pyx_codeobj__89);
  Py_CLEAR(clear_module_state->__pyx_codeobj__90);
  Py_CLEAR(clear_module_state->__pyx_codeobj__91);
  Py_CLEAR(clear_module_state->__pyx_codeobj__93);
  Py_CLEAR(clear_module_state->__pyx_codeobj__95);
  Py_CLEAR(clear_module_state->__pyx_codeobj__96);
  Py_CLEAR(clear_module_state->__pyx_codeobj__97);
  Py_CLEAR(clear_module_state->__pyx_codeobj__98);
  Py_CLEAR(clear_module_state->__pyx_codeobj__99);
  Py_CLEAR(clear_module_state->__pyx_codeobj__100);
  Py_CLEAR(clear_module_state->__pyx_codeobj__101);
  Py_CLEAR(clear_module_state->__pyx_codeobj__102);
  Py_CLEAR(clear_module_state->__pyx_codeobj__103);
  Py_CLEAR(clear_module_state->__pyx_codeobj__104);
  Py_CLEAR(clear_module_state->__pyx_codeobj__105);
  Py_CLEAR(clear_module_state->__pyx_codeobj__106);
  Py_CLEAR(clear_module_state->__pyx_codeobj__107);
  Py_CLEAR(clear_module_state->__pyx_codeobj__108);
  Py_CLEAR(clear_module_state->__pyx_codeobj__109);
  Py_CLEAR(clear_module_state->__pyx_codeobj__110);
  Py_CLEAR(clear_module_state->__pyx_codeobj__111);
  Py_CLEAR(clear_module_state->__pyx_codeobj__112);
  Py_CLEAR(clear_module_state->__pyx_codeobj__113);
  Py_CLEAR(clear_module_state->__pyx_codeobj__114);
  Py_CLEAR(clear_module_state->__pyx_codeobj__115);
  Py_CLEAR(clear_module_state->__pyx_codeobj__116);
  Py_CLEAR(clear_module_state->__pyx_codeobj__117);
  Py_CLEAR(clear_module_state->__pyx_codeobj__118);
  Py_CLEAR(clear_module_state->__pyx_codeobj__119);
  Py_CLEAR(clear_module_state->__pyx_codeobj__120);
  Py_CLEAR(clear_module_state->__pyx_codeobj__121);
  Py_CLEAR(clear_module_state->__pyx_codeobj__122);
  Py_CLEAR(clear_module_state->__pyx_codeobj__123);
  Py_CLEAR(clear_module_state->__pyx_codeobj__124);
  Py_CLEAR(clear_module_state->__pyx_codeobj__125);
  Py_CLEAR(clear_module_state->__pyx_codeobj__126);
  Py_CLEAR(clear_module_state->__pyx_codeobj__127);
  Py_CLEAR(clear_module_state->__pyx_codeobj__128);
  Py_CLEAR(clear_module_state->__pyx_codeobj__130);
  Py_CLEAR(clear_module_state->__pyx_codeobj__132);
  Py_CLEAR(clear_module_state->__pyx_codeobj__134);
  Py_CLEAR(clear_module_state->__pyx_codeobj__135);
  Py_CLEAR(clear_module_state->__pyx_codeobj__136);
  Py_CLEAR(clear_module_state->__pyx_codeobj__137);
  Py_CLEAR(clear_module_state->__pyx_codeobj__138);
  Py_CLEAR(clear_module_state->__pyx_codeobj__139);
  Py_CLEAR(clear_module_state->__pyx_codeobj__140);
  Py_CLEAR(clear_module_state->__pyx_codeobj__141);
  Py_CLEAR(clear_module_state->__pyx_codeobj__142);
  Py_CLEAR(clear_module_state->__pyx_codeobj__143);
  Py_CLEAR(clear_module_state->__pyx_codeobj__144);
  Py_CLEAR(clear_module_state->__pyx_codeobj__145);
  Py_CLEAR(clear_module_state->__pyx_codeobj__146);
  Py_CLEAR(clear_module_state->__pyx_codeobj__147);
  Py_CLEAR(clear_module_state->__pyx_codeobj__148);
  Py_CLEAR(clear_module_state->__pyx_codeobj__149);
  Py_CLEAR(clear_module_state->__pyx_codeobj__150);
  Py_CLEAR(clear_module_state->__pyx_codeobj__151);
  Py_CLEAR(clear_module_state->__pyx_codeobj__152);
  Py_CLEAR(clear_module_state->__pyx_codeobj__153);
  Py_CLEAR(clear_module_state->__pyx_codeobj__154);
  Py_CLEAR(clear_module_state->__pyx_codeobj__155);
  Py_CLEAR(clear_module_state->__pyx_codeobj__157);
  Py_CLEAR(clear_module_state->__pyx_codeobj__158);
  Py_CLEAR(clear_module_state->__pyx_codeobj__159);
  Py_CLEAR(clear_module_state->__pyx_codeobj__160);
  Py_CLEAR(clear_module_state->__pyx_codeobj__161);
  Py_CLEAR(clear_module_state->__pyx_codeobj__162);
  Py_CLEAR(clear_module_state->__pyx_codeobj__163);
  Py_CLEAR(clear_module_state->__pyx_codeobj__164);
  Py_CLEAR(clear_module_state->__pyx_codeobj__165);
  Py_CLEAR(clear_module_state->__pyx_codeobj__166);
  Py_CLEAR(clear_module_state->__pyx_codeobj__167);
  Py_CLEAR(clear_module_state->__pyx_codeobj__168);
  Py_CLEAR(clear_module_state->__pyx_codeobj__169);
  Py_CLEAR(clear_module_state->__pyx_codeobj__170);
  Py_CLEAR(clear_module_state->__pyx_codeobj__171);
  Py_CLEAR(clear_module_state->__pyx_codeobj__172);
  Py_CLEAR(clear_module_state->__pyx_codeobj__173);
  Py_CLEAR(clear_module_state->__pyx_codeobj__174);
  Py_CLEAR(clear_module_state->__pyx_codeobj__175);
  Py_CLEAR(clear_module_state->__pyx_codeobj__176);
  Py_CLEAR(clear_module_state->__pyx_codeobj__177);
  Py_CLEAR(clear_module_state->__pyx_codeobj__178);
  Py_CLEAR(clear_module_state->__pyx_codeobj__179);
  Py_CLEAR(clear_module_state->__pyx_codeobj__180);
  Py_CLEAR(clear_module_state->__pyx_codeobj__181);
  Py_CLEAR(clear_module_state->__pyx_codeobj__182);
  Py_CLEAR(clear_module_state->__pyx_codeobj__183);
  Py_CLEAR(clear_module_state->__pyx_codeobj__184);
  Py_CLEAR(clear_module_state->__pyx_codeobj__185);
  Py_CLEAR(clear_module_state->__pyx_codeobj__186);
  Py_CLEAR(clear_module_state->__pyx_codeobj__187);
  Py_CLEAR(clear_module_state->__pyx_codeobj__188);
  Py_CLEAR(clear_module_state->__pyx_codeobj__189);
  Py_CLEAR(clear_module_state->__pyx_codeobj__190);
  Py_CLEAR(clear_module_state->__pyx_codeobj__191);
  Py_CLEAR(clear_module_state->__pyx_codeobj__192);
  Py_CLEAR(clear_module_state->__pyx_codeobj__193);
  Py_CLEAR(clear_module_state->__pyx_codeobj__195);
  Py_CLEAR(clear_module_state->__pyx_codeobj__197);
  Py_CLEAR(clear_module_state->__pyx_codeobj__199);
  Py_CLEAR(clear_module_state->__pyx_codeobj__202);
  Py_CLEAR(clear_module_state->__pyx_codeobj__204);
  Py_CLEAR(clear_module_state->__pyx_codeobj__205);
  Py_CLEAR(clear_module_state->__pyx_codeobj__206);
  Py_CLEAR(clear_module_state->__pyx_codeobj__208);
  Py_CLEAR(clear_module_state->__pyx_codeobj__209);
  Py_CLEAR(clear_module_state->__pyx_codeobj__210);
  Py_CLEAR(clear_module_state->__pyx_codeobj__212);
  Py_CLEAR(clear_module_state->__pyx_codeobj__213);
  Py_CLEAR(clear_module_state->__pyx_codeobj__215);
  Py_CLEAR(clear_module_state->__pyx_codeobj__216);
  Py_CLEAR(clear_module_state->__pyx_codeobj__217);
  Py_CLEAR(clear_module_state->__pyx_codeobj__219);
  Py_CLEAR(clear_module_state->__pyx_codeobj__222);
  Py_CLEAR(clear_module_state->__pyx_codeobj__224);
  Py_CLEAR(clear_module_state->__pyx_codeobj__225);
  Py_CLEAR(clear_module_state->__pyx_codeobj__226);
  Py_CLEAR(clear_module_state->__pyx_codeobj__227);
  Py_CLEAR(clear_module_state->__pyx_codeobj__229);
  Py_CLEAR(clear_module_state->__pyx_codeobj__230);
  Py_CLEAR(clear_module_state->__pyx_codeobj__231);
  Py_CLEAR(clear_module_state->__pyx_codeobj__232);
  Py_CLEAR(clear_module_state->__pyx_codeobj__234);
  Py_CLEAR(clear_module_state->__pyx_codeobj__237);
  Py_CLEAR(clear_module_state->__pyx_codeobj__239);
  Py_CLEAR(clear_module_state->__pyx_codeobj__240);
  Py_CLEAR(clear_module_state->__pyx_codeobj__241);
  Py_CLEAR(clear_module_state->__pyx_codeobj__242);
  Py_CLEAR(clear_module_state->__pyx_codeobj__243);
  Py_CLEAR(clear_module_state->__pyx_codeobj__244);
  Py_CLEAR(clear_module_state->__pyx_codeobj__245);
  Py_CLEAR(clear_module_state->__pyx_codeobj__246);
  Py_CLEAR(clear_module_state->__pyx_codeobj__247);
  Py_CLEAR(clear_module_state->__pyx_codeobj__248);
  Py_CLEAR(clear_module_state->__pyx_codeobj__249);
  Py_CLEAR(clear_module_state->__pyx_codeobj__251);
  Py_CLEAR(clear_module_state->__pyx_codeobj__253);
  Py_CLEAR(clear_module_state->__pyx_codeobj__254);
  Py_CLEAR(clear_module_state->__pyx_codeobj__255);
  Py_CLEAR(clear_module_state->__pyx_codeobj__256);
  Py_CLEAR(clear_module_state->__pyx_codeobj__257);
  Py_CLEAR(clear_module_state->__pyx_codeobj__259);
  Py_CLEAR(clear_module_state->__pyx_codeobj__260);
  Py_CLEAR(clear_module_state->__pyx_codeobj__261);
  Py_CLEAR(clear_module_state->__pyx_codeobj__263);
  Py_CLEAR(clear_module_state->__pyx_codeobj__265);
  Py_CLEAR(clear_module_state->__pyx_codeobj__267);
  Py_CLEAR(clear_module_state->__pyx_codeobj__269);
  Py_CLEAR(clear_module_state->__pyx_codeobj__271);
  Py_CLEAR(clear_module_state->__pyx_codeobj__273);
  Py_CLEAR(clear_module_state->__pyx_codeobj__274);
  Py_CLEAR(clear_module_state->__pyx_codeobj__276);
  Py_CLEAR(clear_module_state->__pyx_codeobj__279);
  Py_CLEAR(clear_module_state->__pyx_codeobj__281);
  Py_CLEAR(clear_module_state->__pyx_codeobj__283);
  Py_CLEAR(clear_module_state->__pyx_codeobj__286);
  Py_CLEAR(clear_module_state->__pyx_codeobj__289);
  Py_CLEAR(clear_module_state->__pyx_codeobj__291);
  Py_CLEAR(clear_module_state->__pyx_codeobj__292);
  Py_CLEAR(clear_module_state->__pyx_codeobj__293);
  Py_CLEAR(clear_module_state->__pyx_codeobj__295);
  Py_CLEAR(clear_module_state->__pyx_codeobj__296);
  Py_CLEAR(clear_module_state->__pyx_codeobj__297);
  Py_CLEAR(clear_module_state->__pyx_codeobj__298);
  Py_CLEAR(clear_module_state->__pyx_codeobj__300);
  Py_CLEAR(clear_module_state->__pyx_codeobj__302);
  Py_CLEAR(clear_module_state->__pyx_codeobj__303);
  Py_CLEAR(clear_module_state->__pyx_codeobj__304);
  Py_CLEAR(clear_module_state->__pyx_codeobj__306);
  Py_CLEAR(clear_module_state->__pyx_codeobj__307);
  Py_CLEAR(clear_module_state->__pyx_codeobj__308);
  Py_CLEAR(clear_module_state->__pyx_codeobj__310);
  Py_CLEAR(clear_module_state->__pyx_codeobj__311);
  Py_CLEAR(clear_module_state->__pyx_codeobj__312);
  Py_CLEAR(clear_module_state->__pyx_codeobj__313);
  Py_CLEAR(clear_module_state->__pyx_codeobj__314);
  Py_CLEAR(clear_module_state->__pyx_codeobj__316);
  Py_CLEAR(clear_module_state->__pyx_codeobj__317);
  Py_CLEAR(clear_module_state->__pyx_codeobj__318);
  Py_CLEAR(clear_module_state->__pyx_codeobj__319);
  Py_CLEAR(clear_module_state->__pyx_codeobj__320);
  Py_CLEAR(clear_module_state->__pyx_codeobj__321);
  Py_CLEAR(clear_module_state->__pyx_codeobj__322);
  Py_CLEAR(clear_module_state->__pyx_codeobj__323);
  Py_CLEAR(clear_module_state->__pyx_codeobj__325);
  Py_CLEAR(clear_module_state->__pyx_codeobj__326);
  Py_CLEAR(clear_module_state->__pyx_codeobj__327);
  Py_CLEAR(clear_module_state->__pyx_codeobj__328);
  Py_CLEAR(clear_module_state->__pyx_codeobj__330);
  Py_CLEAR(clear_module_state->__pyx_codeobj__331);
  Py_CLEAR(clear_module_state->__pyx_codeobj__332);
  Py_CLEAR(clear_module_state->__pyx_codeobj__333);
  Py_CLEAR(clear_module_state->__pyx_codeobj__334);
  Py_CLEAR(clear_module_state->__pyx_codeobj__335);
  Py_CLEAR(clear_module_state->__pyx_codeobj__336);
  Py_CLEAR(clear_module_state->__pyx_codeobj__337);
  Py_CLEAR(clear_module_state->__pyx_codeobj__338);
  Py_CLEAR(clear_module_state->__pyx_codeobj__339);
  Py_CLEAR(clear_module_state->__pyx_codeobj__340);
  Py_CLEAR(clear_module_state->__pyx_codeobj__341);
  Py_CLEAR(clear_module_state->__pyx_codeobj__342);
  Py_CLEAR(clear_module_state->__pyx_codeobj__343);
  Py_CLEAR(clear_module_state->__pyx_codeobj__345);
  Py_CLEAR(clear_module_state->__pyx_codeobj__346);
  Py_CLEAR(clear_module_state->__pyx_codeobj__347);
  Py_CLEAR(clear_module_state->__pyx_codeobj__348);
  Py_CLEAR(clear_module_state->__pyx_codeobj__349);
  Py_CLEAR(clear_module_state->__pyx_codeobj__350);
  Py_CLEAR(clear_module_state->__pyx_codeobj__351);
  Py_CLEAR(clear_module_state->__pyx_codeobj__352);
  Py_CLEAR(clear_module_state->__pyx_codeobj__353);
  Py_CLEAR(clear_module_state->__pyx_codeobj__354);
  Py_CLEAR(clear_module_state->__pyx_codeobj__356);
  Py_CLEAR(clear_module_state->__pyx_codeobj__358);
  Py_CLEAR(clear_module_state->__pyx_codeobj__359);
  Py_CLEAR(clear_module_state->__pyx_codeobj__360);
  Py_CLEAR(clear_module_state->__pyx_codeobj__361);
  Py_CLEAR(clear_module_state->__pyx_codeobj__363);
  Py_CLEAR(clear_module_state->__pyx_codeobj__366);
  Py_CLEAR(clear_module_state->__pyx_codeobj__367);
  Py_CLEAR(clear_module_state->__pyx_codeobj__368);
  Py_CLEAR(clear_module_state->__pyx_codeobj__369);
  Py_CLEAR(clear_module_state->__pyx_codeobj__370);
  Py_CLEAR(clear_module_state->__pyx_codeobj__371);
  Py_CLEAR(clear_module_state->__pyx_codeobj__372);
  Py_CLEAR(clear_module_state->__pyx_codeobj__373);
  Py_CLEAR(clear_module_state->__pyx_codeobj__374);
  Py_CLEAR(clear_module_state->__pyx_codeobj__375);
  Py_CLEAR(clear_module_state->__pyx_codeobj__376);
  Py_CLEAR(clear_module_state->__pyx_codeobj__377);
  Py_CLEAR(clear_module_state->__pyx_codeobj__378);
  Py_CLEAR(clear_module_state->__pyx_codeobj__379);
  Py_CLEAR(clear_module_state->__pyx_codeobj__380);
  Py_CLEAR(clear_module_state->__pyx_codeobj__381);
  Py_CLEAR(clear_module_state->__pyx_codeobj__382);
  Py_CLEAR(clear_module_state->__pyx_codeobj__384);
  Py_CLEAR(clear_module_state->__pyx_codeobj__386);
  Py_CLEAR(clear_module_state->__pyx_codeobj__387);
  Py_CLEAR(clear_module_state->__pyx_codeobj__388);
  Py_CLEAR(clear_module_state->__pyx_codeobj__389);
  Py_CLEAR(clear_module_state->__pyx_codeobj__390);
  Py_CLEAR(clear_module_state->__pyx_codeobj__391);
  Py_CLEAR(clear_module_state->__pyx_codeobj__392);
  Py_CLEAR(clear_module_state->__pyx_codeobj__393);
  Py_CLEAR(clear_module_state->__pyx_codeobj__394);
  Py_CLEAR(clear_module_state->__pyx_codeobj__395);
  Py_CLEAR(clear_module_state->__pyx_codeobj__396);
  Py_CLEAR(clear_module_state->__pyx_codeobj__397);
  Py_CLEAR(clear_module_state->__pyx_codeobj__398);
  Py_CLEAR(clear_module_state->__pyx_codeobj__399);
  Py_CLEAR(clear_module_state->__pyx_codeobj__400);
  Py_CLEAR(clear_module_state->__pyx_codeobj__401);
  Py_CLEAR(clear_module_state->__pyx_codeobj__402);
  Py_CLEAR(clear_module_state->__pyx_codeobj__403);
  Py_CLEAR(clear_module_state->__pyx_codeobj__404);
  Py_CLEAR(clear_module_state->__pyx_codeobj__405);
  Py_CLEAR(clear_module_state->__pyx_codeobj__406);
  Py_CLEAR(clear_module_state->__pyx_codeobj__407);
  Py_CLEAR(clear_module_state->__pyx_codeobj__408);
  Py_CLEAR(clear_module_state->__pyx_codeobj__409);
  Py_CLEAR(clear_module_state->__pyx_codeobj__410);
  Py_CLEAR(clear_module_state->__pyx_codeobj__411);
  Py_CLEAR(clear_module_state->__pyx_codeobj__412);
  Py_CLEAR(clear_module_state->__pyx_codeobj__413);
  Py_CLEAR(clear_module_state->__pyx_codeobj__414);
  Py_CLEAR(clear_module_state->__pyx_codeobj__415);
  Py_CLEAR(clear_module_state->__pyx_codeobj__416);
  Py_CLEAR(clear_module_state->__pyx_codeobj__417);
  Py_CLEAR(clear_module_state->__pyx_codeobj__418);
  Py_CLEAR(clear_module_state->__pyx_codeobj__419);
  Py_CLEAR(clear_module_state->__pyx_codeobj__420);
  Py_CLEAR(clear_module_state->__pyx_codeobj__421);
  Py_CLEAR(clear_module_state->__pyx_codeobj__422);
  Py_CLEAR(clear_module_state->__pyx_codeobj__423);
  Py_CLEAR(clear_module_state->__pyx_codeobj__424);
  Py_CLEAR(clear_module_state->__pyx_codeobj__425);
  Py_CLEAR(clear_module_state->__pyx_codeobj__426);
  Py_CLEAR(clear_module_state->__pyx_codeobj__427);
  Py_CLEAR(clear_module_state->__pyx_codeobj__428);
  Py_CLEAR(clear_module_state->__pyx_codeobj__429);
  Py_CLEAR(clear_module_state->__pyx_codeobj__430);
  Py_CLEAR(clear_module_state->__pyx_codeobj__431);
  Py_CLEAR(clear_module_state->__pyx_codeobj__432);
  Py_CLEAR(clear_module_state->__pyx_codeobj__433);
  Py_CLEAR(clear_module_state->__pyx_codeobj__434);
  Py_CLEAR(clear_module_state->__pyx_codeobj__435);
  Py_CLEAR(clear_module_state->__pyx_codeobj__436);
  Py_CLEAR(clear_module_state->__pyx_codeobj__437);
  Py_CLEAR(clear_module_state->__pyx_codeobj__438);
  Py_CLEAR(clear_module_state->__pyx_codeobj__439);
  Py_CLEAR(clear_module_state->__pyx_codeobj__440);
  Py_CLEAR(clear_module_state->__pyx_codeobj__441);
  Py_CLEAR(clear_module_state->__pyx_codeobj__442);
  Py_CLEAR(clear_module_state->__pyx_codeobj__443);
  Py_CLEAR(clear_module_state->__pyx_codeobj__444);
  Py_CLEAR(clear_module_state->__pyx_codeobj__445);
  Py_CLEAR(clear_module_state->__pyx_codeobj__446);
  Py_CLEAR(clear_module_state->__pyx_codeobj__447);
  Py_CLEAR(clear_module_state->__pyx_codeobj__448);
  Py_CLEAR(clear_module_state->__pyx_codeobj__449);
  Py_CLEAR(clear_module_state->__pyx_codeobj__450);
  Py_CLEAR(clear_module_state->__pyx_codeobj__451);
  Py_CLEAR(clear_module_state->__pyx_codeobj__452);
  Py_CLEAR(clear_module_state->__pyx_codeobj__453);
  Py_CLEAR(clear_module_state->__pyx_codeobj__454);
  Py_CLEAR(clear_module_state->__pyx_codeobj__455);
  Py_CLEAR(clear_module_state->__pyx_codeobj__456);
  Py_CLEAR(clear_module_state->__pyx_codeobj__457);
  Py_CLEAR(clear_module_state->__pyx_codeobj__458);
  Py_CLEAR(clear_module_state->__pyx_codeobj__459);
  Py_CLEAR(clear_module_state->__pyx_codeobj__460);
  Py_CLEAR(clear_module_state->__pyx_codeobj__461);
  Py_CLEAR(clear_module_state->__pyx_codeobj__462);
  Py_CLEAR(clear_module_state->__pyx_codeobj__463);
  Py_CLEAR(clear_module_state->__pyx_codeobj__464);
  Py_CLEAR(clear_module_state->__pyx_codeobj__465);
  Py_CLEAR(clear_module_state->__pyx_codeobj__466);
  Py_CLEAR(clear_module_state->__pyx_codeobj__467);
  Py_CLEAR(clear_module_state->__pyx_codeobj__468);
  Py_CLEAR(clear_module_state->__pyx_codeobj__469);
  Py_CLEAR(clear_module_state->__pyx_codeobj__470);
  Py_CLEAR(clear_module_state->__pyx_codeobj__471);
  Py_CLEAR(clear_module_state->__pyx_codeobj__472);
  Py_CLEAR(clear_module_state->__pyx_codeobj__473);
  Py_CLEAR(clear_module_state->__pyx_codeobj__474);
  Py_CLEAR(clear_module_state->__pyx_codeobj__475);
  Py_CLEAR(clear_module_state->__pyx_codeobj__476);
  Py_CLEAR(clear_module_state->__pyx_codeobj__477);
  Py_CLEAR(clear_module_state->__pyx_codeobj__478);
  Py_CLEAR(clear_module_state->__pyx_codeobj__479);
  Py_CLEAR(clear_module_state->__pyx_codeobj__480);
  Py_CLEAR(clear_module_state->__pyx_codeobj__481);
  Py_CLEAR(clear_module_state->__pyx_codeobj__482);
  Py_CLEAR(clear_module_state->__pyx_codeobj__483);
  Py_CLEAR(clear_module_state->__pyx_codeobj__484);
  Py_CLEAR(clear_module_state->__pyx_codeobj__485);
  Py_CLEAR(clear_module_state->__pyx_codeobj__486);
  Py_CLEAR(clear_module_state->__pyx_codeobj__487);
  Py_CLEAR(clear_module_state->__pyx_codeobj__488);
  Py_CLEAR(clear_module_state->__pyx_codeobj__489);
  Py_CLEAR(clear_module_state->__pyx_codeobj__490);
  Py_CLEAR(clear_module_state->__pyx_codeobj__491);
  Py_CLEAR(clear_module_state->__pyx_codeobj__492);
  Py_CLEAR(clear_module_state->__pyx_codeobj__494);
  Py_CLEAR(clear_module_state->__pyx_codeobj__496);
  Py_CLEAR(clear_module_state->__pyx_codeobj__497);
  Py_CLEAR(clear_module_state->__pyx_codeobj__498);
  Py_CLEAR(clear_module_state->__pyx_codeobj__499);
  Py_CLEAR(clear_module_state->__pyx_codeobj__501);
  Py_CLEAR(clear_module_state->__pyx_codeobj__502);
  Py_CLEAR(clear_module_state->__pyx_codeobj__503);
  Py_CLEAR(clear_module_state->__pyx_codeobj__504);
  Py_CLEAR(clear_module_state->__pyx_codeobj__505);
  Py_CLEAR(clear_module_state->__pyx_codeobj__506);
  Py_CLEAR(clear_module_state->__pyx_codeobj__507);
  Py_CLEAR(clear_module_state->__pyx_codeobj__508);
  Py_CLEAR(clear_module_state->__pyx_codeobj__509);
  Py_CLEAR(clear_module_state->__pyx_codeobj__510);
  Py_CLEAR(clear_module_state->__pyx_codeobj__511);
  Py_CLEAR(clear_module_state->__pyx_codeobj__512);
  Py_CLEAR(clear_module_state->__pyx_codeobj__513);
  Py_CLEAR(clear_module_state->__pyx_codeobj__514);
  Py_CLEAR(clear_module_state->__pyx_codeobj__515);
  Py_CLEAR(clear_module_state->__pyx_codeobj__516);
  Py_CLEAR(clear_module_state->__pyx_codeobj__517);
  Py_CLEAR(clear_module_state->__pyx_codeobj__518);
  Py_CLEAR(clear_module_state->__pyx_codeobj__519);
  Py_CLEAR(clear_module_state->__pyx_codeobj__520);
  Py_CLEAR(clear_module_state->__pyx_codeobj__521);
  Py_CLEAR(clear_module_state->__pyx_codeobj__522);
  Py_CLEAR(clear_module_state->__pyx_codeobj__523);
  Py_CLEAR(clear_module_state->__pyx_codeobj__524);
  Py_CLEAR(clear_module_state->__pyx_codeobj__525);
  Py_CLEAR(clear_module_state->__pyx_codeobj__526);
  Py_CLEAR(clear_module_state->__pyx_codeobj__527);
  Py_CLEAR(clear_module_state->__pyx_codeobj__528);
  Py_CLEAR(clear_module_state->__pyx_codeobj__529);
  Py_CLEAR(clear_module_state->__pyx_codeobj__530);
  Py_CLEAR(clear_module_state->__pyx_codeobj__531);
  Py_CLEAR(clear_module_state->__pyx_codeobj__532);
  Py_CLEAR(clear_module_state->__pyx_codeobj__533);
  Py_CLEAR(clear_module_state->__pyx_codeobj__534);
  Py_CLEAR(clear_module_state->__pyx_codeobj__535);
  Py_CLEAR(clear_module_state->__pyx_codeobj__537);
  Py_CLEAR(clear_module_state->__pyx_codeobj__539);
  Py_CLEAR(clear_module_state->__pyx_codeobj__541);
  Py_CLEAR(clear_module_state->__pyx_codeobj__543);
  Py_CLEAR(clear_module_state->__pyx_codeobj__544);
  Py_CLEAR(clear_module_state->__pyx_codeobj__545);
  Py_CLEAR(clear_module_state->__pyx_codeobj__546);
  Py_CLEAR(clear_module_state->__pyx_codeobj__547);
  Py_CLEAR(clear_module_state->__pyx_codeobj__548);
  Py_CLEAR(clear_module_state->__pyx_codeobj__550);
  Py_CLEAR(clear_module_state->__pyx_codeobj__552);
  Py_CLEAR(clear_module_state->__pyx_codeobj__553);
  Py_CLEAR(clear_module_state->__pyx_codeobj__555);
  Py_CLEAR(clear_module_state->__pyx_codeobj__557);
  Py_CLEAR(clear_module_state->__pyx_codeobj__560);
  Py_CLEAR(clear_module_state->__pyx_codeobj__561);
  Py_CLEAR(clear_module_state->__pyx_codeobj__562);
  Py_CLEAR(clear_module_state->__pyx_codeobj__563);
  Py_CLEAR(clear_module_state->__pyx_codeobj__564);
  Py_CLEAR(clear_module_state->__pyx_codeobj__565);
  Py_CLEAR(clear_module_state->__pyx_codeobj__566);
  Py_CLEAR(clear_module_state->__pyx_codeobj__567);
  Py_CLEAR(clear_module_state->__pyx_codeobj__568);
  Py_CLEAR(clear_module_state->__pyx_codeobj__569);
  Py_CLEAR(clear_module_state->__pyx_codeobj__570);
  Py_CLEAR(clear_module_state->__pyx_codeobj__571);
  Py_CLEAR(clear_module_state->__pyx_codeobj__572);
  Py_CLEAR(clear_module_state->__pyx_codeobj__573);
  Py_CLEAR(clear_module_state->__pyx_codeobj__575);
  Py_CLEAR(clear_module_state->__pyx_codeobj__577);
  Py_CLEAR(clear_module_state->__pyx_codeobj__578);
  Py_CLEAR(clear_module_state->__pyx_codeobj__579);
  Py_CLEAR(clear_module_state->__pyx_codeobj__580);
  Py_CLEAR(clear_module_state->__pyx_codeobj__582);
  Py_CLEAR(clear_module_state->__pyx_codeobj__583);
  Py_CLEAR(clear_module_state->__pyx_codeobj__584);
  Py_CLEAR(clear_module_state->__pyx_codeobj__585);
  Py_CLEAR(clear_module_state->__pyx_codeobj__586);
  Py_CLEAR(clear_module_state->__pyx_codeobj__587);
  Py_CLEAR(clear_module_state->__pyx_codeobj__588);
  Py_CLEAR(clear_module_state->__pyx_codeobj__589);
  Py_CLEAR(clear_module_state->__pyx_codeobj__590);
  Py_CLEAR(clear_module_state->__pyx_codeobj__591);
  Py_CLEAR(clear_module_state->__pyx_codeobj__592);
  Py_CLEAR(clear_module_state->__pyx_codeobj__593);
  Py_CLEAR(clear_module_state->__pyx_codeobj__595);
  Py_CLEAR(clear_module_state->__pyx_codeobj__596);
  Py_CLEAR(clear_module_state->__pyx_codeobj__597);
  Py_CLEAR(clear_module_state->__pyx_codeobj__598);
  Py_CLEAR(clear_module_state->__pyx_codeobj__599);
  Py_CLEAR(clear_module_state->__pyx_codeobj__600);
  Py_CLEAR(clear_module_state->__pyx_codeobj__601);
  Py_CLEAR(clear_module_state->__pyx_codeobj__602);
  Py_CLEAR(clear_module_state->__pyx_codeobj__603);
  Py_CLEAR(clear_module_state->__pyx_codeobj__604);
  Py_CLEAR(clear_module_state->__pyx_codeobj__605);
  Py_CLEAR(clear_module_state->__pyx_codeobj__606);
  Py_CLEAR(clear_module_state->__pyx_codeobj__607);
  Py_CLEAR(clear_module_state->__pyx_codeobj__608);
  Py_CLEAR(clear_module_state->__pyx_codeobj__609);
  Py_CLEAR(clear_module_state->__pyx_codeobj__610);
  Py_CLEAR(clear_module_state->__pyx_codeobj__611);
  Py_CLEAR(clear_module_state->__pyx_codeobj__612);
  Py_CLEAR(clear_module_state->__pyx_codeobj__613);
  Py_CLEAR(clear_module_state->__pyx_codeobj__614);
  Py_CLEAR(clear_module_state->__pyx_codeobj__615);
  Py_CLEAR(clear_module_state->__pyx_codeobj__616);
  Py_CLEAR(clear_module_state->__pyx_codeobj__617);
  Py_CLEAR(clear_module_state->__pyx_codeobj__618);
  Py_CLEAR(clear_module_state->__pyx_codeobj__619);
  Py_CLEAR(clear_module_state->__pyx_codeobj__620);
  Py_CLEAR(clear_module_state->__pyx_codeobj__621);
  Py_CLEAR(clear_module_state->__pyx_codeobj__622);
  Py_CLEAR(clear_module_state->__pyx_codeobj__623);
  Py_CLEAR(clear_module_state->__pyx_codeobj__624);
  Py_CLEAR(clear_module_state->__pyx_codeobj__625);
  Py_CLEAR(clear_module_state->__pyx_codeobj__626);
  Py_CLEAR(clear_module_state->__pyx_codeobj__627);
  Py_CLEAR(clear_module_state->__pyx_codeobj__628);
  Py_CLEAR(clear_module_state->__pyx_codeobj__629);
  Py_CLEAR(clear_module_state->__pyx_codeobj__631);
  Py_CLEAR(clear_module_state->__pyx_codeobj__633);
  Py_CLEAR(clear_module_state->__pyx_codeobj__634);
  Py_CLEAR(clear_module_state->__pyx_codeobj__635);
  Py_CLEAR(clear_module_state->__pyx_codeobj__636);
  Py_CLEAR(clear_module_state->__pyx_codeobj__637);
  Py_CLEAR(clear_module_state->__pyx_codeobj__638);
  Py_CLEAR(clear_module_state->__pyx_codeobj__639);
  Py_CLEAR(clear_module_state->__pyx_codeobj__640);
  Py_CLEAR(clear_module_state->__pyx_codeobj__641);
  Py_CLEAR(clear_module_state->__pyx_codeobj__642);
  Py_CLEAR(clear_module_state->__pyx_codeobj__643);
  Py_CLEAR(clear_module_state->__pyx_codeobj__644);
  Py_CLEAR(clear_module_state->__pyx_codeobj__645);
  Py_CLEAR(clear_module_state->__pyx_codeobj__646);
  Py_CLEAR(clear_module_state->__pyx_codeobj__647);
  Py_CLEAR(clear_module_state->__pyx_codeobj__648);
  Py_CLEAR(clear_module_state->__pyx_codeobj__649);
  Py_CLEAR(clear_module_state->__pyx_codeobj__650);
  Py_CLEAR(clear_module_state->__pyx_codeobj__651);
  Py_CLEAR(clear_module_state->__pyx_codeobj__652);
  Py_CLEAR(clear_module_state->__pyx_codeobj__653);
  Py_CLEAR(clear_module_state->__pyx_codeobj__654);
  Py_CLEAR(clear_module_state->__pyx_codeobj__655);
  Py_CLEAR(clear_module_state->__pyx_codeobj__656);
  Py_CLEAR(clear_module_state->__pyx_codeobj__657);
  Py_CLEAR(clear_module_state->__pyx_codeobj__659);
  Py_CLEAR(clear_module_state->__pyx_codeobj__660);
  Py_CLEAR(clear_module_state->__pyx_codeobj__661);
  Py_CLEAR(clear_module_state->__pyx_codeobj__663);
  Py_CLEAR(clear_module_state->__pyx_codeobj__665);
  Py_CLEAR(clear_module_state->__pyx_codeobj__666);
  Py_CLEAR(clear_module_state->__pyx_codeobj__667);
  Py_CLEAR(clear_module_state->__pyx_codeobj__668);
  Py_CLEAR(clear_module_state->__pyx_codeobj__669);
  Py_CLEAR(clear_module_state->__pyx_codeobj__670);
  Py_CLEAR(clear_module_state->__pyx_codeobj__671);
  Py_CLEAR(clear_module_state->__pyx_codeobj__672);
  Py_CLEAR(clear_module_state->__pyx_codeobj__674);
  Py_CLEAR(clear_module_state->__pyx_codeobj__676);
  Py_CLEAR(clear_module_state->__pyx_codeobj__679);
  Py_CLEAR(clear_module_state->__pyx_codeobj__681);
  Py_CLEAR(clear_module_state->__pyx_codeobj__682);
  Py_CLEAR(clear_module_state->__pyx_codeobj__683);
  Py_CLEAR(clear_module_state->__pyx_codeobj__684);
  Py_CLEAR(clear_module_state->__pyx_codeobj__685);
  Py_CLEAR(clear_module_state->__pyx_codeobj__686);
  Py_CLEAR(clear_module_state->__pyx_codeobj__688);
  Py_CLEAR(clear_module_state->__pyx_codeobj__690);
  Py_CLEAR(clear_module_state->__pyx_codeobj__691);
  Py_CLEAR(clear_module_state->__pyx_codeobj__693);
  Py_CLEAR(clear_module_state->__pyx_codeobj__694);
  Py_CLEAR(clear_module_state->__pyx_codeobj__695);
  Py_CLEAR(clear_module_state->__pyx_codeobj__696);
  Py_CLEAR(clear_module_state->__pyx_codeobj__698);
  Py_CLEAR(clear_module_state->__pyx_codeobj__700);
  Py_CLEAR(clear_module_state->__pyx_codeobj__701);
  Py_CLEAR(clear_module_state->__pyx_codeobj__702);
  Py_CLEAR(clear_module_state->__pyx_codeobj__703);
  Py_CLEAR(clear_module_state->__pyx_codeobj__705);
  Py_CLEAR(clear_module_state->__pyx_codeobj__706);
  Py_CLEAR(clear_module_state->__pyx_codeobj__707);
  Py_CLEAR(clear_module_state->__pyx_codeobj__708);
  Py_CLEAR(clear_module_state->__pyx_codeobj__709);
  Py_CLEAR(clear_module_state->__pyx_codeobj__710);
  Py_CLEAR(clear_module_state->__pyx_codeobj__711);
  Py_CLEAR(clear_module_state->__pyx_codeobj__712);
  Py_CLEAR(clear_module_state->__pyx_codeobj__713);
  Py_CLEAR(clear_module_state->__pyx_codeobj__714);
  Py_CLEAR(clear_module_state->__pyx_codeobj__715);
  Py_CLEAR(clear_module_state->__pyx_codeobj__716);
  Py_CLEAR(clear_module_state->__pyx_codeobj__717);
  Py_CLEAR(clear_module_state->__pyx_codeobj__719);
  Py_CLEAR(clear_module_state->__pyx_codeobj__720);
  Py_CLEAR(clear_module_state->__pyx_codeobj__721);
  Py_CLEAR(clear_module_state->__pyx_codeobj__722);
  Py_CLEAR(clear_module_state->__pyx_codeobj__723);
  Py_CLEAR(clear_module_state->__pyx_codeobj__724);
  Py_CLEAR(clear_module_state->__pyx_codeobj__725);
  Py_CLEAR(clear_module_state->__pyx_codeobj__726);
  Py_CLEAR(clear_module_state->__pyx_codeobj__727);
  Py_CLEAR(clear_module_state->__pyx_codeobj__728);
  Py_CLEAR(clear_module_state->__pyx_codeobj__729);
  Py_CLEAR(clear_module_state->__pyx_codeobj__730);
  Py_CLEAR(clear_module_state->__pyx_codeobj__731);
  Py_CLEAR(clear_module_state->__pyx_codeobj__732);
  Py_CLEAR(clear_module_state->__pyx_codeobj__733);
  Py_CLEAR(clear_module_state->__pyx_codeobj__734);
  Py_CLEAR(clear_module_state->__pyx_codeobj__735);
  Py_CLEAR(clear_module_state->__pyx_codeobj__736);
  Py_CLEAR(clear_module_state->__pyx_codeobj__737);
  Py_CLEAR(clear_module_state->__pyx_codeobj__738);
  Py_CLEAR(clear_module_state->__pyx_codeobj__739);
  Py_CLEAR(clear_module_state->__pyx_codeobj__740);
  Py_CLEAR(clear_module_state->__pyx_codeobj__741);
  Py_CLEAR(clear_module_state->__pyx_codeobj__742);
  Py_CLEAR(clear_module_state->__pyx_codeobj__743);
  Py_CLEAR(clear_module_state->__pyx_codeobj__744);
  Py_CLEAR(clear_module_state->__pyx_codeobj__745);
  Py_CLEAR(clear_module_state->__pyx_codeobj__746);
  Py_CLEAR(clear_module_state->__pyx_codeobj__747);
  Py_CLEAR(clear_module_state->__pyx_codeobj__748);
  Py_CLEAR(clear_module_state->__pyx_codeobj__749);
  Py_CLEAR(clear_module_state->__pyx_codeobj__750);
  Py_CLEAR(clear_module_state->__pyx_codeobj__751);
  Py_CLEAR(clear_module_state->__pyx_codeobj__752);
  Py_CLEAR(clear_module_state->__pyx_codeobj__753);
  Py_CLEAR(clear_module_state->__pyx_codeobj__754);
  Py_CLEAR(clear_module_state->__pyx_codeobj__755);
  Py_CLEAR(clear_module_state->__pyx_codeobj__756);
  Py_CLEAR(clear_module_state->__pyx_codeobj__757);
  Py_CLEAR(clear_module_state->__pyx_codeobj__758);
  Py_CLEAR(clear_module_state->__pyx_codeobj__759);
  Py_CLEAR(clear_module_state->__pyx_codeobj__760);
  Py_CLEAR(clear_module_state->__pyx_codeobj__762);
  Py_CLEAR(clear_module_state->__pyx_codeobj__764);
  Py_CLEAR(clear_module_state->__pyx_codeobj__766);
  Py_CLEAR(clear_module_state->__pyx_codeobj__768);
  Py_CLEAR(clear_module_state->__pyx_codeobj__770);
  Py_CLEAR(clear_module_state->__pyx_codeobj__771);
  Py_CLEAR(clear_module_state->__pyx_codeobj__772);
  Py_CLEAR(clear_module_state->__pyx_codeobj__773);
  Py_CLEAR(clear_module_state->__pyx_codeobj__775);
  Py_CLEAR(clear_module_state->__pyx_codeobj__776);
  Py_CLEAR(clear_module_state->__pyx_codeobj__777);
  Py_CLEAR(clear_module_state->__pyx_codeobj__778);
  Py_CLEAR(clear_module_state->__pyx_codeobj__779);
  Py_CLEAR(clear_module_state->__pyx_codeobj__780);
  Py_CLEAR(clear_module_state->__pyx_codeobj__782);
  Py_CLEAR(clear_module_state->__pyx_codeobj__784);
  Py_CLEAR(clear_module_state->__pyx_codeobj__787);
  Py_CLEAR(clear_module_state->__pyx_codeobj__789);
  Py_CLEAR(clear_module_state->__pyx_codeobj__791);
  Py_CLEAR(clear_module_state->__pyx_codeobj__793);
  Py_CLEAR(clear_module_state->__pyx_codeobj__795);
  Py_CLEAR(clear_module_state->__pyx_codeobj__797);
  Py_CLEAR(clear_module_state->__pyx_codeobj__798);
  Py_CLEAR(clear_module_state->__pyx_codeobj__799);
  Py_CLEAR(clear_module_state->__pyx_codeobj__801);
  Py_CLEAR(clear_module_state->__pyx_codeobj__802);
  Py_CLEAR(clear_module_state->__pyx_codeobj__803);
  Py_CLEAR(clear_module_state->__pyx_codeobj__804);
  Py_CLEAR(clear_module_state->__pyx_codeobj__806);
  Py_CLEAR(clear_module_state->__pyx_codeobj__807);
  Py_CLEAR(clear_module_state->__pyx_codeobj__809);
  Py_CLEAR(clear_module_state->__pyx_codeobj__810);
  Py_CLEAR(clear_module_state->__pyx_codeobj__811);
  Py_CLEAR(clear_module_state->__pyx_codeobj__812);
  Py_CLEAR(clear_module_state->__pyx_codeobj__813);
  Py_CLEAR(clear_module_state->__pyx_codeobj__814);
  Py_CLEAR(clear_module_state->__pyx_codeobj__815);
  Py_CLEAR(clear_module_state->__pyx_codeobj__816);
  Py_CLEAR(clear_module_state->__pyx_codeobj__817);
  Py_CLEAR(clear_module_state->__pyx_codeobj__818);
  Py_CLEAR(clear_module_state->__pyx_codeobj__819);
  Py_CLEAR(clear_module_state->__pyx_codeobj__820);
  Py_CLEAR(clear_module_state->__pyx_codeobj__821);
  Py_CLEAR(clear_module_state->__pyx_codeobj__822);
  Py_CLEAR(clear_module_state->__pyx_codeobj__823);
  Py_CLEAR(clear_module_state->__pyx_codeobj__824);
  Py_CLEAR(clear_module_state->__pyx_codeobj__825);
  Py_CLEAR(clear_module_state->__pyx_codeobj__827);
  Py_CLEAR(clear_module_state->__pyx_codeobj__829);
  Py_CLEAR(clear_module_state->__pyx_codeobj__830);
  Py_CLEAR(clear_module_state->__pyx_codeobj__831);
  Py_CLEAR(clear_module_state->__pyx_codeobj__832);
  Py_CLEAR(clear_module_state->__pyx_codeobj__833);
  Py_CLEAR(clear_module_state->__pyx_codeobj__834);
  Py_CLEAR(clear_module_state->__pyx_codeobj__835);
  Py_CLEAR(clear_module_state->__pyx_codeobj__836);
  Py_CLEAR(clear_module_state->__pyx_codeobj__838);
  Py_CLEAR(clear_module_state->__pyx_codeobj__839);
  Py_CLEAR(clear_module_state->__pyx_codeobj__840);
  Py_CLEAR(clear_module_state->__pyx_codeobj__841);
  Py_CLEAR(clear_module_state->__pyx_codeobj__842);
  Py_CLEAR(clear_module_state->__pyx_codeobj__843);
  Py_CLEAR(clear_module_state->__pyx_codeobj__844);
  Py_CLEAR(clear_module_state->__pyx_codeobj__845);
  Py_CLEAR(clear_module_state->__pyx_codeobj__846);
  Py_CLEAR(clear_module_state->__pyx_codeobj__847);
  Py_CLEAR(clear_module_state->__pyx_codeobj__849);
  Py_CLEAR(clear_module_state->__pyx_codeobj__850);
  Py_CLEAR(clear_module_state->__pyx_codeobj__852);
  Py_CLEAR(clear_module_state->__pyx_codeobj__853);
  Py_CLEAR(clear_module_state->__pyx_codeobj__854);
  Py_CLEAR(clear_module_state->__pyx_codeobj__855);
  Py_CLEAR(clear_module_state->__pyx_codeobj__856);
  Py_CLEAR(clear_module_state->__pyx_codeobj__857);
  Py_CLEAR(clear_module_state->__pyx_codeobj__858);
  Py_CLEAR(clear_module_state->__pyx_codeobj__859);
  Py_CLEAR(clear_module_state->__pyx_codeobj__860);
  Py_CLEAR(clear_module_state->__pyx_codeobj__861);
  Py_CLEAR(clear_module_state->__pyx_codeobj__862);
  Py_CLEAR(clear_module_state->__pyx_codeobj__863);
  Py_CLEAR(clear_module_state->__pyx_codeobj__864);
  Py_CLEAR(clear_module_state->__pyx_codeobj__865);
  Py_CLEAR(clear_module_state->__pyx_codeobj__866);
  Py_CLEAR(clear_module_state->__pyx_codeobj__867);
  Py_CLEAR(clear_module_state->__pyx_codeobj__868);
  Py_CLEAR(clear_module_state->__pyx_codeobj__869);
  Py_CLEAR(clear_module_state->__pyx_codeobj__870);
  Py_CLEAR(clear_module_state->__pyx_codeobj__872);
  Py_CLEAR(clear_module_state->__pyx_codeobj__873);
  Py_CLEAR(clear_module_state->__pyx_codeobj__874);
  Py_CLEAR(clear_module_state->__pyx_codeobj__875);
  Py_CLEAR(clear_module_state->__pyx_codeobj__876);
  Py_CLEAR(clear_module_state->__pyx_codeobj__877);
  Py_CLEAR(clear_module_state->__pyx_codeobj__879);
  Py_CLEAR(clear_module_state->__pyx_codeobj__881);
  Py_CLEAR(clear_module_state->__pyx_codeobj__882);
  Py_CLEAR(clear_module_state->__pyx_codeobj__883);
  Py_CLEAR(clear_module_state->__pyx_codeobj__884);
  Py_CLEAR(clear_module_state->__pyx_codeobj__885);
  Py_CLEAR(clear_module_state->__pyx_codeobj__887);
  Py_CLEAR(clear_module_state->__pyx_codeobj__888);
  Py_CLEAR(clear_module_state->__pyx_codeobj__889);
  Py_CLEAR(clear_module_state->__pyx_codeobj__890);
  Py_CLEAR(clear_module_state->__pyx_codeobj__891);
  Py_CLEAR(clear_module_state->__pyx_codeobj__893);
  Py_CLEAR(clear_module_state->__pyx_codeobj__894);
  Py_CLEAR(clear_module_state->__pyx_codeobj__895);
  Py_CLEAR(clear_module_state->__pyx_codeobj__896);
  Py_CLEAR(clear_module_state->__pyx_codeobj__897);
  Py_CLEAR(clear_module_state->__pyx_codeobj__898);
  Py_CLEAR(clear_module_state->__pyx_codeobj__899);
  Py_CLEAR(clear_module_state->__pyx_codeobj__900);
  Py_CLEAR(clear_module_state->__pyx_codeobj__901);
  Py_CLEAR(clear_module_state->__pyx_codeobj__902);
  Py_CLEAR(clear_module_state->__pyx_codeobj__903);
  Py_CLEAR(clear_module_state->__pyx_codeobj__904);
  Py_CLEAR(clear_module_state->__pyx_codeobj__905);
  Py_CLEAR(clear_module_state->__pyx_codeobj__906);
  Py_CLEAR(clear_module_state->__pyx_codeobj__907);
  Py_CLEAR(clear_module_state->__pyx_codeobj__908);
  Py_CLEAR(clear_module_state->__pyx_codeobj__909);
  Py_CLEAR(clear_module_state->__pyx_codeobj__910);
  Py_CLEAR(clear_module_state->__pyx_codeobj__911);
  Py_CLEAR(clear_module_state->__pyx_codeobj__912);
  Py_CLEAR(clear_module_state->__pyx_codeobj__913);
  Py_CLEAR(clear_module_state->__pyx_codeobj__914);
  Py_CLEAR(clear_module_state->__pyx_codeobj__915);
  Py_CLEAR(clear_module_state->__pyx_codeobj__916);
  Py_CLEAR(clear_module_state->__pyx_codeobj__917);
  Py_CLEAR(clear_module_state->__pyx_codeobj__918);
  Py_CLEAR(clear_module_state->__pyx_codeobj__919);
  Py_CLEAR(clear_module_state->__pyx_codeobj__920);
  Py_CLEAR(clear_module_state->__pyx_codeobj__921);
  Py_CLEAR(clear_module_state->__pyx_codeobj__922);
  Py_CLEAR(clear_module_state->__pyx_codeobj__923);
  Py_CLEAR(clear_module_state->__pyx_codeobj__925);
  Py_CLEAR(clear_module_state->__pyx_codeobj__928);
  Py_CLEAR(clear_module_state->__pyx_codeobj__930);
  Py_CLEAR(clear_module_state->__pyx_codeobj__931);
  Py_CLEAR(clear_module_state->__pyx_codeobj__933);
  Py_CLEAR(clear_module_state->__pyx_codeobj__936);
  Py_CLEAR(clear_module_state->__pyx_codeobj__938);
  Py_CLEAR(clear_module_state->__pyx_codeobj__940);
  Py_CLEAR(clear_module_state->__pyx_codeobj__941);
  Py_CLEAR(clear_module_state->__pyx_codeobj__943);
  Py_CLEAR(clear_module_state->__pyx_codeobj__945);
  Py_CLEAR(clear_module_state->__pyx_codeobj__947);
  Py_CLEAR(clear_module_state->__pyx_codeobj__949);
  Py_CLEAR(clear_module_state->__pyx_codeobj__950);
  Py_CLEAR(clear_module_state->__pyx_codeobj__952);
  Py_CLEAR(clear_module_state->__pyx_codeobj__955);
  Py_CLEAR(clear_module_state->__pyx_codeobj__957);
  Py_CLEAR(clear_module_state->__pyx_codeobj__959);
  Py_CLEAR(clear_module_state->__pyx_codeobj__962);
  Py_CLEAR(clear_module_state->__pyx_codeobj__965);
  Py_CLEAR(clear_module_state->__pyx_codeobj__967);
  Py_CLEAR(clear_module_state->__pyx_codeobj__969);
  Py_CLEAR(clear_module_state->__pyx_codeobj__972);
  Py_CLEAR(clear_module_state->__pyx_codeobj__973);
  Py_CLEAR(clear_module_state->__pyx_codeobj__974);
  Py_CLEAR(clear_module_state->__pyx_codeobj__976);
  return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstate *traverse_module_state = __pyx_mstate(m);
  if (!traverse_module_state) return 0;
  Py_VISIT(traverse_module_state->__pyx_d);
  Py_VISIT(traverse_module_state->__pyx_b);
  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
  Py_VISIT(traverse_module_state->__pyx_empty_tuple);
  Py_VISIT(traverse_module_state->__pyx_empty_bytes);
  Py_VISIT(traverse_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
  #endif
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4util_Base);
  Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Dbn0D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Dbn0D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Bin);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Bin);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Bin1D_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Bin1D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_HistoBin1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_HistoBin1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_ProfileBin1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_ProfileBin1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_AnalysisObject);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_AnalysisObject);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Counter);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Counter);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Histo1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Histo1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Profile1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Profile1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Bin2D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Bin2D_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_ProfileBin2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_ProfileBin2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_HistoBin2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_HistoBin2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Histo2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Histo2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Profile2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Profile2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Point);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Point);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Point1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Point1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Point2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Point2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Point3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Point3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Scatter1D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Scatter1D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Scatter2D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Scatter2D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core_Scatter3D);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core_Scatter3D);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr);
  Py_VISIT(traverse_module_state->__pyx_kp_s_0_2e);
  Py_VISIT(traverse_module_state->__pyx_n_s_AO);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_annotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_annotations);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_annotationsDict);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_clearAnnotations);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_dump);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_hasAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_path);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_rmAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_setAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_setPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_setTitle);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_title);
  Py_VISIT(traverse_module_state->__pyx_n_s_AnalysisObject_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_AssertionError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_merge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn1D_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_merge);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin1D_Dbn2D_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_adjacentTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_area);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_xyWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn2D_yWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_adjacentTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_area);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_xyWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin2D_Dbn3D_yWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Bin_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_CFUNCTYPE);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Callback_is_not_of_type_double_d);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_err);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Counter_val);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn0D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Dbn0D_val_g_err_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_fill);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Dbn1D_mean_s_stddev_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_mean);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Dbn2D_mean_s_stdDev_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_rms);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_scaleXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_stdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumWXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn2D_variance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_mean);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Dbn3D_mean_s_stddev_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_rms);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleXYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_stdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWXZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_sumWZ2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Dbn3D_variance);
  Py_VISIT(traverse_module_state->__pyx_n_s_H1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_H2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___addBins_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___addBins_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___addBins_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___addBins_tuples);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___init5);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__addBins_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__addBins_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__addBins_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__addBins_tuples);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__init3_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__init5);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_addBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_addBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_areaErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_areas);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_binIndexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_fillBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_heightErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_heights);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_integralRange);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_integralTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_mergeBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_overflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_rebin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_rebinBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_rebinTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_relErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_sumWs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_toIntegral);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_totalDbn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_underflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo1D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D___init8);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D__init8);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_addBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_addBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_binIndexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_fillBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_heightErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_heights);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_relErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_sumWs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_totalDbn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_volumeErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_volumes);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xyMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xyRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xyStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xyStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_xyVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Histo2D_zVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D_area);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D_areaErr);
  Py_VISIT(traverse_module_state->__pyx_kp_s_HistoBin1D_g_g_sumw_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D_height);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D_heightErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin1D_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D_height);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D_heightErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D_volume);
  Py_VISIT(traverse_module_state->__pyx_n_s_HistoBin2D_volumeErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ImportError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Index);
  Py_VISIT(traverse_module_state->__pyx_n_s_IndexError);
  Py_VISIT(traverse_module_state->__pyx_n_s_Index___init);
  Py_VISIT(traverse_module_state->__pyx_n_s_Index___repr);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Index_of_a_file);
  Py_VISIT(traverse_module_state->__pyx_n_s_Index_toDict);
  Py_VISIT(traverse_module_state->__pyx_n_s_MemoryError);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Null_pointer_referenced_perhaps);
  Py_VISIT(traverse_module_state->__pyx_n_s_OrderedDict);
  Py_VISIT(traverse_module_state->__pyx_n_s_P1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_P2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_setX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_setXErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_setYErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Point1D_x_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_scaleXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_setX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_setXErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_setY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_setYErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_xErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Point2D_x_g_y_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_copy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_scaleXYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setXErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setYErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_setZErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_xErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_xMin);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Point3D_x_g_y_g_z_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_z);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point3D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_dim);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_errAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_errMap);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_errMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_errPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_rmVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_setErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_setErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_setErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_setErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_setVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_Point_val);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D___init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D___init5);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D__init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D__init3_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D__init5);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_addBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_addBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_binIndexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_fillBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_mergeBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_overflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_rebin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_rebinBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_rebinTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_sumWs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_totalDbn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_underflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yMeans);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yStdDevs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yStdErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile1D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D___init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D___init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D___init8);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D__init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D__init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D__init8);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_addBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_addBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_binIndexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_fillBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_sumWs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_totalDbn);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xyMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xyRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xyStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xyStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_xyVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zMeans);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zStdDevs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zStdErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Profile2D_zVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_kp_s_ProfileBin1D_g_g_sumw_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_mean);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_rms);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_stdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin1D_variance);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_kp_s_ProfileBin2D_g_g_g_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_mean);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_rms);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_stdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_sumWZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_sumWZ2);
  Py_VISIT(traverse_module_state->__pyx_n_s_ProfileBin2D_variance);
  Py_VISIT(traverse_module_state->__pyx_n_s_RuntimeError);
  Py_VISIT(traverse_module_state->__pyx_n_s_S1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_S2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_S3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_addPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_addPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_combineWith);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_hasValidErrorBreakdown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_numPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_parseVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_rmPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_rmPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_rmVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_transformX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_updateTotalUncertainty);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_variations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_writeVariationsToAnnot);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter1D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_addPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_addPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_combineWith);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_correlationMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_covarianceMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_hasValidErrorBreakdown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_numPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_parseVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_rmPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_rmPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_rmVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_transformX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_transformY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_updateTotalUncertainty);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_variations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_writeVariationsToAnnot);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter2D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D___setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D__mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_addPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_addPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_combineWith);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_covarianceMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_hasValidErrorBreakdown);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_numPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_rmPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_rmPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_rmVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleXYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_transformX);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_transformY);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_transformZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_updateTotalUncertainty);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_variations);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_writeVariationsToAnnot);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_Scatter3D_zVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_StringIO);
  Py_VISIT(traverse_module_state->__pyx_n_s_TypeError);
  Py_VISIT(traverse_module_state->__pyx_kp_s_Unsupported_bin_of_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_ValueError);
  Py_VISIT(traverse_module_state->__pyx_n_s_XY);
  Py_VISIT(traverse_module_state->__pyx_n_s_XYZ);
  Py_VISIT(traverse_module_state->__pyx_kp_s__11);
  Py_VISIT(traverse_module_state->__pyx_kp_b__2);
  Py_VISIT(traverse_module_state->__pyx_kp_s__2);
  Py_VISIT(traverse_module_state->__pyx_kp_u__3);
  Py_VISIT(traverse_module_state->__pyx_n_s__4);
  Py_VISIT(traverse_module_state->__pyx_kp_s__8);
  Py_VISIT(traverse_module_state->__pyx_n_s__977);
  Py_VISIT(traverse_module_state->__pyx_n_s_a);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBins_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBins_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBins_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_addBins_tuples);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPoint_explicit);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPoint_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_addPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_addressof);
  Py_VISIT(traverse_module_state->__pyx_n_s_adjacentTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_ana_objs);
  Py_VISIT(traverse_module_state->__pyx_n_s_annotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_annotations);
  Py_VISIT(traverse_module_state->__pyx_n_s_annotationsDict);
  Py_VISIT(traverse_module_state->__pyx_n_s_annotationsDict_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ao);
  Py_VISIT(traverse_module_state->__pyx_n_s_ao1);
  Py_VISIT(traverse_module_state->__pyx_n_s_ao2);
  Py_VISIT(traverse_module_state->__pyx_n_s_aobjects);
  Py_VISIT(traverse_module_state->__pyx_n_s_aolist);
  Py_VISIT(traverse_module_state->__pyx_n_s_area);
  Py_VISIT(traverse_module_state->__pyx_n_s_areaErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_areaErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_areas);
  Py_VISIT(traverse_module_state->__pyx_n_s_arg);
  Py_VISIT(traverse_module_state->__pyx_n_s_args);
  Py_VISIT(traverse_module_state->__pyx_n_s_array);
  Py_VISIT(traverse_module_state->__pyx_n_s_asdict);
  Py_VISIT(traverse_module_state->__pyx_n_s_asgrid);
  Py_VISIT(traverse_module_state->__pyx_n_s_asum);
  Py_VISIT(traverse_module_state->__pyx_n_s_asymm);
  Py_VISIT(traverse_module_state->__pyx_n_s_asyncio_coroutines);
  Py_VISIT(traverse_module_state->__pyx_n_s_attrgetter);
  Py_VISIT(traverse_module_state->__pyx_n_s_autostr);
  Py_VISIT(traverse_module_state->__pyx_n_s_ax);
  Py_VISIT(traverse_module_state->__pyx_n_s_ay);
  Py_VISIT(traverse_module_state->__pyx_n_s_az);
  Py_VISIT(traverse_module_state->__pyx_n_s_b);
  Py_VISIT(traverse_module_state->__pyx_n_s_begin);
  Py_VISIT(traverse_module_state->__pyx_n_s_bin);
  Py_VISIT(traverse_module_state->__pyx_n_s_binAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_binErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_binIndexAt);
  Py_VISIT(traverse_module_state->__pyx_n_s_binTotal);
  Py_VISIT(traverse_module_state->__pyx_n_s_binareadiv);
  Py_VISIT(traverse_module_state->__pyx_n_s_binedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_bins_or_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_binwidthdiv);
  Py_VISIT(traverse_module_state->__pyx_n_s_buffer);
  Py_VISIT(traverse_module_state->__pyx_n_s_bytestr_from_file);
  Py_VISIT(traverse_module_state->__pyx_n_s_cStringIO);
  Py_VISIT(traverse_module_state->__pyx_n_s_c_double);
  Py_VISIT(traverse_module_state->__pyx_n_s_callback);
  Py_VISIT(traverse_module_state->__pyx_n_s_cbin);
  Py_VISIT(traverse_module_state->__pyx_n_s_cbins);
  Py_VISIT(traverse_module_state->__pyx_n_s_cedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_class);
  Py_VISIT(traverse_module_state->__pyx_n_s_class_getitem);
  Py_VISIT(traverse_module_state->__pyx_n_s_clearAnnotations);
  Py_VISIT(traverse_module_state->__pyx_n_s_cline_in_traceback);
  Py_VISIT(traverse_module_state->__pyx_n_s_clone);
  Py_VISIT(traverse_module_state->__pyx_n_s_close);
  Py_VISIT(traverse_module_state->__pyx_n_s_collections);
  Py_VISIT(traverse_module_state->__pyx_n_s_combineWith);
  Py_VISIT(traverse_module_state->__pyx_n_s_compile);
  Py_VISIT(traverse_module_state->__pyx_n_s_copy);
  Py_VISIT(traverse_module_state->__pyx_kp_s_core_pyx);
  Py_VISIT(traverse_module_state->__pyx_n_s_corr);
  Py_VISIT(traverse_module_state->__pyx_n_s_correlation);
  Py_VISIT(traverse_module_state->__pyx_n_s_correlationMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_counter);
  Py_VISIT(traverse_module_state->__pyx_n_s_covMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_covariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_covarianceMatrix);
  Py_VISIT(traverse_module_state->__pyx_n_s_ctypes);
  Py_VISIT(traverse_module_state->__pyx_n_s_d);
  Py_VISIT(traverse_module_state->__pyx_n_s_da);
  Py_VISIT(traverse_module_state->__pyx_n_s_default);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict);
  Py_VISIT(traverse_module_state->__pyx_n_s_dict_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_dim);
  Py_VISIT(traverse_module_state->__pyx_kp_u_disable);
  Py_VISIT(traverse_module_state->__pyx_n_s_divide);
  Py_VISIT(traverse_module_state->__pyx_n_s_divideBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_doc);
  Py_VISIT(traverse_module_state->__pyx_n_s_dump);
  Py_VISIT(traverse_module_state->__pyx_n_s_dx);
  Py_VISIT(traverse_module_state->__pyx_n_s_e);
  Py_VISIT(traverse_module_state->__pyx_n_s_edge);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges);
  Py_VISIT(traverse_module_state->__pyx_n_s_edges_or_bins);
  Py_VISIT(traverse_module_state->__pyx_n_s_effNumEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_efficiency);
  Py_VISIT(traverse_module_state->__pyx_n_s_elem);
  Py_VISIT(traverse_module_state->__pyx_kp_u_enable);
  Py_VISIT(traverse_module_state->__pyx_n_s_encode);
  Py_VISIT(traverse_module_state->__pyx_n_s_end);
  Py_VISIT(traverse_module_state->__pyx_n_s_enter);
  Py_VISIT(traverse_module_state->__pyx_n_s_err);
  Py_VISIT(traverse_module_state->__pyx_n_s_errAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_errMap);
  Py_VISIT(traverse_module_state->__pyx_n_s_errMap_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_errMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_errPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_errW);
  Py_VISIT(traverse_module_state->__pyx_n_s_err_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_errs);
  Py_VISIT(traverse_module_state->__pyx_n_s_es);
  Py_VISIT(traverse_module_state->__pyx_n_s_exit);
  Py_VISIT(traverse_module_state->__pyx_n_s_f);
  Py_VISIT(traverse_module_state->__pyx_n_s_file_or_filename);
  Py_VISIT(traverse_module_state->__pyx_n_s_filename);
  Py_VISIT(traverse_module_state->__pyx_n_s_fill);
  Py_VISIT(traverse_module_state->__pyx_n_s_fillBin);
  Py_VISIT(traverse_module_state->__pyx_n_s_fn);
  Py_VISIT(traverse_module_state->__pyx_n_s_foci);
  Py_VISIT(traverse_module_state->__pyx_n_s_format);
  Py_VISIT(traverse_module_state->__pyx_n_s_fptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_fraction);
  Py_VISIT(traverse_module_state->__pyx_kp_u_gc);
  Py_VISIT(traverse_module_state->__pyx_n_s_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_getDataPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_getLibPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_getYodaDataPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_getstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_h);
  Py_VISIT(traverse_module_state->__pyx_n_s_h_binsizediv);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_hasValidErrorBreakdown);
  Py_VISIT(traverse_module_state->__pyx_n_s_height);
  Py_VISIT(traverse_module_state->__pyx_n_s_heightErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_heightErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_heights);
  Py_VISIT(traverse_module_state->__pyx_n_s_high);
  Py_VISIT(traverse_module_state->__pyx_n_s_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_ia);
  Py_VISIT(traverse_module_state->__pyx_n_s_ib);
  Py_VISIT(traverse_module_state->__pyx_n_s_idx);
  Py_VISIT(traverse_module_state->__pyx_n_s_idxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_ignoreOffDiagonalTerms);
  Py_VISIT(traverse_module_state->__pyx_n_s_import);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_AnalysisObject_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Bin_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Counter_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Dbn0D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Dbn1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Dbn2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Dbn3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Functions_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Histo1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Histo2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_HistoBin1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_HistoBin2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_IO_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Point1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Point2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Point3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Point_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Profile1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Profile2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_ProfileBin1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_ProfileBin2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Scatter1D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Scatter2D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_Scatter3D_pyx);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin1D_Dbn1D_py);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin1D_Dbn2D_py);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin2D_Dbn2D_py);
  Py_VISIT(traverse_module_state->__pyx_kp_s_include_generated_Bin2D_Dbn3D_py);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeoverflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeoverflows);
  Py_VISIT(traverse_module_state->__pyx_n_s_includeunderflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_index_between);
  Py_VISIT(traverse_module_state->__pyx_n_s_index_map);
  Py_VISIT(traverse_module_state->__pyx_n_s_init);
  Py_VISIT(traverse_module_state->__pyx_n_s_init2);
  Py_VISIT(traverse_module_state->__pyx_n_s_init3);
  Py_VISIT(traverse_module_state->__pyx_n_s_init4);
  Py_VISIT(traverse_module_state->__pyx_n_s_init5);
  Py_VISIT(traverse_module_state->__pyx_n_s_init8);
  Py_VISIT(traverse_module_state->__pyx_n_s_init_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_init_3);
  Py_VISIT(traverse_module_state->__pyx_n_s_init_subclass);
  Py_VISIT(traverse_module_state->__pyx_n_s_initializing);
  Py_VISIT(traverse_module_state->__pyx_n_s_integral);
  Py_VISIT(traverse_module_state->__pyx_n_s_integralRange);
  Py_VISIT(traverse_module_state->__pyx_n_s_integralTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_io);
  Py_VISIT(traverse_module_state->__pyx_n_s_is_coroutine);
  Py_VISIT(traverse_module_state->__pyx_kp_u_isenabled);
  Py_VISIT(traverse_module_state->__pyx_n_s_iss);
  Py_VISIT(traverse_module_state->__pyx_n_s_istxt);
  Py_VISIT(traverse_module_state->__pyx_n_s_items);
  Py_VISIT(traverse_module_state->__pyx_n_s_iter);
  Py_VISIT(traverse_module_state->__pyx_n_s_iterable);
  Py_VISIT(traverse_module_state->__pyx_n_s_iteritems);
  Py_VISIT(traverse_module_state->__pyx_n_s_itertools);
  Py_VISIT(traverse_module_state->__pyx_n_s_ix);
  Py_VISIT(traverse_module_state->__pyx_n_s_j);
  Py_VISIT(traverse_module_state->__pyx_n_s_k);
  Py_VISIT(traverse_module_state->__pyx_n_s_key);
  Py_VISIT(traverse_module_state->__pyx_n_s_kwargs);
  Py_VISIT(traverse_module_state->__pyx_n_s_linspace);
  Py_VISIT(traverse_module_state->__pyx_n_s_logspace);
  Py_VISIT(traverse_module_state->__pyx_n_s_low);
  Py_VISIT(traverse_module_state->__pyx_n_s_lower);
  Py_VISIT(traverse_module_state->__pyx_n_s_main);
  Py_VISIT(traverse_module_state->__pyx_n_s_max);
  Py_VISIT(traverse_module_state->__pyx_n_s_mean);
  Py_VISIT(traverse_module_state->__pyx_n_s_merge);
  Py_VISIT(traverse_module_state->__pyx_n_s_mergeBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_metaclass);
  Py_VISIT(traverse_module_state->__pyx_n_s_min);
  Py_VISIT(traverse_module_state->__pyx_n_s_mkIndexYODA);
  Py_VISIT(traverse_module_state->__pyx_n_s_mkScatter);
  Py_VISIT(traverse_module_state->__pyx_n_s_mknp);
  Py_VISIT(traverse_module_state->__pyx_n_s_mktxtifstr);
  Py_VISIT(traverse_module_state->__pyx_n_s_module);
  Py_VISIT(traverse_module_state->__pyx_n_s_n);
  Py_VISIT(traverse_module_state->__pyx_kp_s_n_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_name_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_nbins);
  Py_VISIT(traverse_module_state->__pyx_n_s_new);
  Py_VISIT(traverse_module_state->__pyx_n_s_normalize);
  Py_VISIT(traverse_module_state->__pyx_n_s_normto);
  Py_VISIT(traverse_module_state->__pyx_n_s_nsample);
  Py_VISIT(traverse_module_state->__pyx_n_s_numBins);
  Py_VISIT(traverse_module_state->__pyx_n_s_numBinsX);
  Py_VISIT(traverse_module_state->__pyx_n_s_numBinsY);
  Py_VISIT(traverse_module_state->__pyx_n_s_numEntries);
  Py_VISIT(traverse_module_state->__pyx_n_s_numPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_numpy);
  Py_VISIT(traverse_module_state->__pyx_n_s_nxbins);
  Py_VISIT(traverse_module_state->__pyx_n_s_nybins);
  Py_VISIT(traverse_module_state->__pyx_n_s_oflow_binwidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_open);
  Py_VISIT(traverse_module_state->__pyx_n_s_operator);
  Py_VISIT(traverse_module_state->__pyx_n_s_oss);
  Py_VISIT(traverse_module_state->__pyx_n_s_other);
  Py_VISIT(traverse_module_state->__pyx_n_s_others);
  Py_VISIT(traverse_module_state->__pyx_n_s_overflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_p);
  Py_VISIT(traverse_module_state->__pyx_n_s_p1ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_p_usestddev);
  Py_VISIT(traverse_module_state->__pyx_n_s_parseVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_parseyaml);
  Py_VISIT(traverse_module_state->__pyx_n_s_path);
  Py_VISIT(traverse_module_state->__pyx_n_s_pattern_check);
  Py_VISIT(traverse_module_state->__pyx_n_s_pattern_check_locals_genexpr);
  Py_VISIT(traverse_module_state->__pyx_n_s_patterns);
  Py_VISIT(traverse_module_state->__pyx_n_s_pdfspace);
  Py_VISIT(traverse_module_state->__pyx_n_s_point);
  Py_VISIT(traverse_module_state->__pyx_n_s_points);
  Py_VISIT(traverse_module_state->__pyx_n_s_precision);
  Py_VISIT(traverse_module_state->__pyx_n_s_prepare);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_state);
  Py_VISIT(traverse_module_state->__pyx_n_s_pyx_vtable);
  Py_VISIT(traverse_module_state->__pyx_n_s_qualname);
  Py_VISIT(traverse_module_state->__pyx_n_s_range);
  Py_VISIT(traverse_module_state->__pyx_n_s_rb);
  Py_VISIT(traverse_module_state->__pyx_n_s_re);
  Py_VISIT(traverse_module_state->__pyx_n_s_read);
  Py_VISIT(traverse_module_state->__pyx_n_s_readAIDA);
  Py_VISIT(traverse_module_state->__pyx_n_s_readFLAT);
  Py_VISIT(traverse_module_state->__pyx_n_s_readYODA);
  Py_VISIT(traverse_module_state->__pyx_n_s_read_error_pair);
  Py_VISIT(traverse_module_state->__pyx_n_s_read_symmetric);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebin);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinBy);
  Py_VISIT(traverse_module_state->__pyx_n_s_rebinTo);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_reduce_ex);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrW);
  Py_VISIT(traverse_module_state->__pyx_n_s_relErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_repeat);
  Py_VISIT(traverse_module_state->__pyx_n_s_replace);
  Py_VISIT(traverse_module_state->__pyx_n_s_repr);
  Py_VISIT(traverse_module_state->__pyx_n_s_repr_string);
  Py_VISIT(traverse_module_state->__pyx_n_s_reset);
  Py_VISIT(traverse_module_state->__pyx_n_s_reshape);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmPoint);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmPoints);
  Py_VISIT(traverse_module_state->__pyx_n_s_rmVariations);
  Py_VISIT(traverse_module_state->__pyx_n_s_rms);
  Py_VISIT(traverse_module_state->__pyx_n_s_row);
  Py_VISIT(traverse_module_state->__pyx_n_s_rtn);
  Py_VISIT(traverse_module_state->__pyx_n_s_s);
  Py_VISIT(traverse_module_state->__pyx_n_s_s1);
  Py_VISIT(traverse_module_state->__pyx_n_s_s2);
  Py_VISIT(traverse_module_state->__pyx_n_s_s2ptr);
  Py_VISIT(traverse_module_state->__pyx_n_s_s3);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_d_bins_sumw_0_2g);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_d_bins_sumw_2g);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_d_points);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_s_sumw_0_2g_err_s);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_x_g_g);
  Py_VISIT(traverse_module_state->__pyx_kp_s_s_x_g_g_y_g_g);
  Py_VISIT(traverse_module_state->__pyx_n_s_sample);
  Py_VISIT(traverse_module_state->__pyx_n_s_sample1);
  Py_VISIT(traverse_module_state->__pyx_n_s_sample2);
  Py_VISIT(traverse_module_state->__pyx_n_s_scale);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleW);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleX);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleXYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleY);
  Py_VISIT(traverse_module_state->__pyx_n_s_scaleZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_sd);
  Py_VISIT(traverse_module_state->__pyx_n_s_search);
  Py_VISIT(traverse_module_state->__pyx_n_s_seek);
  Py_VISIT(traverse_module_state->__pyx_n_s_self);
  Py_VISIT(traverse_module_state->__pyx_kp_s_self__ptr_cannot_be_converted_to);
  Py_VISIT(traverse_module_state->__pyx_n_s_send);
  Py_VISIT(traverse_module_state->__pyx_n_s_set);
  Py_VISIT(traverse_module_state->__pyx_n_s_setAnnotation);
  Py_VISIT(traverse_module_state->__pyx_n_s_setErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_setErrMinus);
  Py_VISIT(traverse_module_state->__pyx_n_s_setErrPlus);
  Py_VISIT(traverse_module_state->__pyx_n_s_setErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_setPath);
  Py_VISIT(traverse_module_state->__pyx_n_s_setTitle);
  Py_VISIT(traverse_module_state->__pyx_n_s_setVal);
  Py_VISIT(traverse_module_state->__pyx_n_s_setX);
  Py_VISIT(traverse_module_state->__pyx_n_s_setXErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_setY);
  Py_VISIT(traverse_module_state->__pyx_n_s_setYErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_setZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_setZErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_set_name);
  Py_VISIT(traverse_module_state->__pyx_n_s_setstate);
  Py_VISIT(traverse_module_state->__pyx_n_s_setstate_cython);
  Py_VISIT(traverse_module_state->__pyx_n_s_sigma_i);
  Py_VISIT(traverse_module_state->__pyx_n_s_sigma_j);
  Py_VISIT(traverse_module_state->__pyx_n_s_source);
  Py_VISIT(traverse_module_state->__pyx_n_s_spec);
  Py_VISIT(traverse_module_state->__pyx_n_s_stdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_stdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_stdin);
  Py_VISIT(traverse_module_state->__pyx_n_s_stdout);
  Py_VISIT(traverse_module_state->__pyx_n_s_str);
  Py_VISIT(traverse_module_state->__pyx_n_s_str_to_file);
  Py_VISIT(traverse_module_state->__pyx_kp_s_stringsource);
  Py_VISIT(traverse_module_state->__pyx_n_s_strip);
  Py_VISIT(traverse_module_state->__pyx_n_s_sum);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumW);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumW2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWX);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWX2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWXY);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWXZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWY);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWY2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWYZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWZ2);
  Py_VISIT(traverse_module_state->__pyx_n_s_sumWs);
  Py_VISIT(traverse_module_state->__pyx_n_s_super);
  Py_VISIT(traverse_module_state->__pyx_n_s_sys);
  Py_VISIT(traverse_module_state->__pyx_n_s_test);
  Py_VISIT(traverse_module_state->__pyx_n_s_throw);
  Py_VISIT(traverse_module_state->__pyx_n_s_title);
  Py_VISIT(traverse_module_state->__pyx_n_s_toDict);
  Py_VISIT(traverse_module_state->__pyx_n_s_toIntegral);
  Py_VISIT(traverse_module_state->__pyx_n_s_totalDbn);
  Py_VISIT(traverse_module_state->__pyx_n_s_transformX);
  Py_VISIT(traverse_module_state->__pyx_n_s_transformY);
  Py_VISIT(traverse_module_state->__pyx_n_s_transformZ);
  Py_VISIT(traverse_module_state->__pyx_n_s_try_loop);
  Py_VISIT(traverse_module_state->__pyx_n_s_tuples);
  Py_VISIT(traverse_module_state->__pyx_n_s_type);
  Py_VISIT(traverse_module_state->__pyx_n_s_uflow_binwidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_underflow);
  Py_VISIT(traverse_module_state->__pyx_n_s_unique);
  Py_VISIT(traverse_module_state->__pyx_n_s_unpatterns);
  Py_VISIT(traverse_module_state->__pyx_n_s_updateTotalUncertainty);
  Py_VISIT(traverse_module_state->__pyx_n_s_upper);
  Py_VISIT(traverse_module_state->__pyx_n_s_usefocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_usestddev);
  Py_VISIT(traverse_module_state->__pyx_kp_s_utf_8);
  Py_VISIT(traverse_module_state->__pyx_n_s_util);
  Py_VISIT(traverse_module_state->__pyx_n_s_v);
  Py_VISIT(traverse_module_state->__pyx_n_s_val);
  Py_VISIT(traverse_module_state->__pyx_n_s_values);
  Py_VISIT(traverse_module_state->__pyx_n_s_var);
  Py_VISIT(traverse_module_state->__pyx_n_s_variance);
  Py_VISIT(traverse_module_state->__pyx_n_s_variations);
  Py_VISIT(traverse_module_state->__pyx_n_s_vars);
  Py_VISIT(traverse_module_state->__pyx_n_s_vec);
  Py_VISIT(traverse_module_state->__pyx_n_s_version);
  Py_VISIT(traverse_module_state->__pyx_n_s_version_info);
  Py_VISIT(traverse_module_state->__pyx_n_s_vol);
  Py_VISIT(traverse_module_state->__pyx_n_s_volErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_volume);
  Py_VISIT(traverse_module_state->__pyx_n_s_volumeErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_volumeErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_volumes);
  Py_VISIT(traverse_module_state->__pyx_n_s_w);
  Py_VISIT(traverse_module_state->__pyx_n_s_weight);
  Py_VISIT(traverse_module_state->__pyx_n_s_write);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeAIDA);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeFLAT);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeVariationsToAnnotations);
  Py_VISIT(traverse_module_state->__pyx_n_s_writeYODA);
  Py_VISIT(traverse_module_state->__pyx_n_s_x);
  Py_VISIT(traverse_module_state->__pyx_n_s_xEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_xErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_xFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_xFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_xMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_xRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_xStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_xStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_xVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_xVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_xWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_xWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_xcuts);
  Py_VISIT(traverse_module_state->__pyx_n_s_xcuts_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_xedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_xerrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_xhigh);
  Py_VISIT(traverse_module_state->__pyx_n_s_xlow);
  Py_VISIT(traverse_module_state->__pyx_n_s_xmax);
  Py_VISIT(traverse_module_state->__pyx_n_s_xmin);
  Py_VISIT(traverse_module_state->__pyx_n_s_xs);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_xyWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_y);
  Py_VISIT(traverse_module_state->__pyx_n_s_yEdges);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrAvgs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_yFoci);
  Py_VISIT(traverse_module_state->__pyx_n_s_yFocus);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMean);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMeans);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMid);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMids);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_yMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_yRMS);
  Py_VISIT(traverse_module_state->__pyx_n_s_yStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_yStdDevs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_yStdErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_yVariance);
  Py_VISIT(traverse_module_state->__pyx_n_s_yWidth);
  Py_VISIT(traverse_module_state->__pyx_n_s_yWidths);
  Py_VISIT(traverse_module_state->__pyx_n_s_ycuts);
  Py_VISIT(traverse_module_state->__pyx_n_s_ycuts_2);
  Py_VISIT(traverse_module_state->__pyx_n_s_yedges);
  Py_VISIT(traverse_module_state->__pyx_n_s_yerrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_yhigh);
  Py_VISIT(traverse_module_state->__pyx_n_s_ylow);
  Py_VISIT(traverse_module_state->__pyx_n_b_yoda);
  Py_VISIT(traverse_module_state->__pyx_n_s_yoda);
  Py_VISIT(traverse_module_state->__pyx_n_s_yoda_core);
  Py_VISIT(traverse_module_state->__pyx_n_s_yoda_util);
  Py_VISIT(traverse_module_state->__pyx_n_s_ys);
  Py_VISIT(traverse_module_state->__pyx_n_s_z);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrAvg);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zErrsFromSource);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMax);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMaxs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMeans);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMin);
  Py_VISIT(traverse_module_state->__pyx_n_s_zMins);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdDev);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdDevs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdErr);
  Py_VISIT(traverse_module_state->__pyx_n_s_zStdErrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zVals);
  Py_VISIT(traverse_module_state->__pyx_n_s_zerrs);
  Py_VISIT(traverse_module_state->__pyx_n_s_zip);
  Py_VISIT(traverse_module_state->__pyx_n_s_zs);
  Py_VISIT(traverse_module_state->__pyx_float_0_);
  Py_VISIT(traverse_module_state->__pyx_float_2_);
  Py_VISIT(traverse_module_state->__pyx_float_0_5);
  Py_VISIT(traverse_module_state->__pyx_float_1_0);
  Py_VISIT(traverse_module_state->__pyx_float_neg_1_);
  Py_VISIT(traverse_module_state->__pyx_int_0);
  Py_VISIT(traverse_module_state->__pyx_int_1);
  Py_VISIT(traverse_module_state->__pyx_int_2);
  Py_VISIT(traverse_module_state->__pyx_int_3);
  Py_VISIT(traverse_module_state->__pyx_int_10000);
  Py_VISIT(traverse_module_state->__pyx_int_neg_1);
  Py_VISIT(traverse_module_state->__pyx_tuple_);
  Py_VISIT(traverse_module_state->__pyx_slice__5);
  Py_VISIT(traverse_module_state->__pyx_slice__6);
  Py_VISIT(traverse_module_state->__pyx_tuple__7);
  Py_VISIT(traverse_module_state->__pyx_tuple__9);
  Py_VISIT(traverse_module_state->__pyx_tuple__10);
  Py_VISIT(traverse_module_state->__pyx_tuple__12);
  Py_VISIT(traverse_module_state->__pyx_tuple__13);
  Py_VISIT(traverse_module_state->__pyx_tuple__18);
  Py_VISIT(traverse_module_state->__pyx_tuple__21);
  Py_VISIT(traverse_module_state->__pyx_tuple__23);
  Py_VISIT(traverse_module_state->__pyx_tuple__24);
  Py_VISIT(traverse_module_state->__pyx_tuple__33);
  Py_VISIT(traverse_module_state->__pyx_tuple__37);
  Py_VISIT(traverse_module_state->__pyx_tuple__40);
  Py_VISIT(traverse_module_state->__pyx_tuple__59);
  Py_VISIT(traverse_module_state->__pyx_tuple__63);
  Py_VISIT(traverse_module_state->__pyx_tuple__65);
  Py_VISIT(traverse_module_state->__pyx_tuple__86);
  Py_VISIT(traverse_module_state->__pyx_tuple__92);
  Py_VISIT(traverse_module_state->__pyx_tuple__94);
  Py_VISIT(traverse_module_state->__pyx_tuple__129);
  Py_VISIT(traverse_module_state->__pyx_tuple__131);
  Py_VISIT(traverse_module_state->__pyx_tuple__133);
  Py_VISIT(traverse_module_state->__pyx_tuple__156);
  Py_VISIT(traverse_module_state->__pyx_tuple__194);
  Py_VISIT(traverse_module_state->__pyx_tuple__196);
  Py_VISIT(traverse_module_state->__pyx_tuple__198);
  Py_VISIT(traverse_module_state->__pyx_tuple__200);
  Py_VISIT(traverse_module_state->__pyx_tuple__201);
  Py_VISIT(traverse_module_state->__pyx_tuple__203);
  Py_VISIT(traverse_module_state->__pyx_tuple__207);
  Py_VISIT(traverse_module_state->__pyx_tuple__211);
  Py_VISIT(traverse_module_state->__pyx_tuple__214);
  Py_VISIT(traverse_module_state->__pyx_tuple__218);
  Py_VISIT(traverse_module_state->__pyx_tuple__220);
  Py_VISIT(traverse_module_state->__pyx_tuple__221);
  Py_VISIT(traverse_module_state->__pyx_tuple__223);
  Py_VISIT(traverse_module_state->__pyx_tuple__228);
  Py_VISIT(traverse_module_state->__pyx_tuple__233);
  Py_VISIT(traverse_module_state->__pyx_tuple__235);
  Py_VISIT(traverse_module_state->__pyx_tuple__236);
  Py_VISIT(traverse_module_state->__pyx_tuple__238);
  Py_VISIT(traverse_module_state->__pyx_tuple__250);
  Py_VISIT(traverse_module_state->__pyx_tuple__252);
  Py_VISIT(traverse_module_state->__pyx_tuple__258);
  Py_VISIT(traverse_module_state->__pyx_tuple__262);
  Py_VISIT(traverse_module_state->__pyx_tuple__264);
  Py_VISIT(traverse_module_state->__pyx_tuple__266);
  Py_VISIT(traverse_module_state->__pyx_tuple__268);
  Py_VISIT(traverse_module_state->__pyx_tuple__270);
  Py_VISIT(traverse_module_state->__pyx_tuple__272);
  Py_VISIT(traverse_module_state->__pyx_tuple__275);
  Py_VISIT(traverse_module_state->__pyx_tuple__277);
  Py_VISIT(traverse_module_state->__pyx_tuple__278);
  Py_VISIT(traverse_module_state->__pyx_tuple__280);
  Py_VISIT(traverse_module_state->__pyx_tuple__282);
  Py_VISIT(traverse_module_state->__pyx_tuple__284);
  Py_VISIT(traverse_module_state->__pyx_tuple__285);
  Py_VISIT(traverse_module_state->__pyx_tuple__287);
  Py_VISIT(traverse_module_state->__pyx_tuple__288);
  Py_VISIT(traverse_module_state->__pyx_tuple__290);
  Py_VISIT(traverse_module_state->__pyx_tuple__294);
  Py_VISIT(traverse_module_state->__pyx_tuple__299);
  Py_VISIT(traverse_module_state->__pyx_tuple__301);
  Py_VISIT(traverse_module_state->__pyx_tuple__305);
  Py_VISIT(traverse_module_state->__pyx_tuple__309);
  Py_VISIT(traverse_module_state->__pyx_tuple__315);
  Py_VISIT(traverse_module_state->__pyx_tuple__324);
  Py_VISIT(traverse_module_state->__pyx_tuple__329);
  Py_VISIT(traverse_module_state->__pyx_tuple__344);
  Py_VISIT(traverse_module_state->__pyx_tuple__355);
  Py_VISIT(traverse_module_state->__pyx_tuple__357);
  Py_VISIT(traverse_module_state->__pyx_tuple__362);
  Py_VISIT(traverse_module_state->__pyx_tuple__364);
  Py_VISIT(traverse_module_state->__pyx_tuple__365);
  Py_VISIT(traverse_module_state->__pyx_tuple__383);
  Py_VISIT(traverse_module_state->__pyx_tuple__385);
  Py_VISIT(traverse_module_state->__pyx_tuple__493);
  Py_VISIT(traverse_module_state->__pyx_tuple__495);
  Py_VISIT(traverse_module_state->__pyx_tuple__500);
  Py_VISIT(traverse_module_state->__pyx_tuple__536);
  Py_VISIT(traverse_module_state->__pyx_tuple__538);
  Py_VISIT(traverse_module_state->__pyx_tuple__540);
  Py_VISIT(traverse_module_state->__pyx_tuple__542);
  Py_VISIT(traverse_module_state->__pyx_tuple__549);
  Py_VISIT(traverse_module_state->__pyx_tuple__551);
  Py_VISIT(traverse_module_state->__pyx_tuple__554);
  Py_VISIT(traverse_module_state->__pyx_tuple__556);
  Py_VISIT(traverse_module_state->__pyx_tuple__558);
  Py_VISIT(traverse_module_state->__pyx_tuple__559);
  Py_VISIT(traverse_module_state->__pyx_tuple__574);
  Py_VISIT(traverse_module_state->__pyx_tuple__576);
  Py_VISIT(traverse_module_state->__pyx_tuple__581);
  Py_VISIT(traverse_module_state->__pyx_tuple__594);
  Py_VISIT(traverse_module_state->__pyx_tuple__630);
  Py_VISIT(traverse_module_state->__pyx_tuple__632);
  Py_VISIT(traverse_module_state->__pyx_tuple__658);
  Py_VISIT(traverse_module_state->__pyx_tuple__662);
  Py_VISIT(traverse_module_state->__pyx_tuple__664);
  Py_VISIT(traverse_module_state->__pyx_tuple__673);
  Py_VISIT(traverse_module_state->__pyx_tuple__675);
  Py_VISIT(traverse_module_state->__pyx_tuple__677);
  Py_VISIT(traverse_module_state->__pyx_tuple__678);
  Py_VISIT(traverse_module_state->__pyx_tuple__680);
  Py_VISIT(traverse_module_state->__pyx_tuple__687);
  Py_VISIT(traverse_module_state->__pyx_tuple__689);
  Py_VISIT(traverse_module_state->__pyx_tuple__692);
  Py_VISIT(traverse_module_state->__pyx_tuple__697);
  Py_VISIT(traverse_module_state->__pyx_tuple__699);
  Py_VISIT(traverse_module_state->__pyx_tuple__704);
  Py_VISIT(traverse_module_state->__pyx_tuple__718);
  Py_VISIT(traverse_module_state->__pyx_tuple__761);
  Py_VISIT(traverse_module_state->__pyx_tuple__763);
  Py_VISIT(traverse_module_state->__pyx_tuple__765);
  Py_VISIT(traverse_module_state->__pyx_tuple__767);
  Py_VISIT(traverse_module_state->__pyx_tuple__769);
  Py_VISIT(traverse_module_state->__pyx_tuple__774);
  Py_VISIT(traverse_module_state->__pyx_tuple__781);
  Py_VISIT(traverse_module_state->__pyx_tuple__783);
  Py_VISIT(traverse_module_state->__pyx_tuple__785);
  Py_VISIT(traverse_module_state->__pyx_tuple__786);
  Py_VISIT(traverse_module_state->__pyx_tuple__788);
  Py_VISIT(traverse_module_state->__pyx_tuple__790);
  Py_VISIT(traverse_module_state->__pyx_tuple__792);
  Py_VISIT(traverse_module_state->__pyx_tuple__794);
  Py_VISIT(traverse_module_state->__pyx_tuple__796);
  Py_VISIT(traverse_module_state->__pyx_tuple__800);
  Py_VISIT(traverse_module_state->__pyx_tuple__805);
  Py_VISIT(traverse_module_state->__pyx_tuple__808);
  Py_VISIT(traverse_module_state->__pyx_tuple__826);
  Py_VISIT(traverse_module_state->__pyx_tuple__828);
  Py_VISIT(traverse_module_state->__pyx_tuple__837);
  Py_VISIT(traverse_module_state->__pyx_tuple__848);
  Py_VISIT(traverse_module_state->__pyx_tuple__851);
  Py_VISIT(traverse_module_state->__pyx_tuple__871);
  Py_VISIT(traverse_module_state->__pyx_tuple__878);
  Py_VISIT(traverse_module_state->__pyx_tuple__880);
  Py_VISIT(traverse_module_state->__pyx_tuple__886);
  Py_VISIT(traverse_module_state->__pyx_tuple__892);
  Py_VISIT(traverse_module_state->__pyx_tuple__924);
  Py_VISIT(traverse_module_state->__pyx_tuple__926);
  Py_VISIT(traverse_module_state->__pyx_tuple__927);
  Py_VISIT(traverse_module_state->__pyx_tuple__929);
  Py_VISIT(traverse_module_state->__pyx_tuple__932);
  Py_VISIT(traverse_module_state->__pyx_tuple__934);
  Py_VISIT(traverse_module_state->__pyx_tuple__935);
  Py_VISIT(traverse_module_state->__pyx_tuple__937);
  Py_VISIT(traverse_module_state->__pyx_tuple__939);
  Py_VISIT(traverse_module_state->__pyx_tuple__942);
  Py_VISIT(traverse_module_state->__pyx_tuple__944);
  Py_VISIT(traverse_module_state->__pyx_tuple__946);
  Py_VISIT(traverse_module_state->__pyx_tuple__948);
  Py_VISIT(traverse_module_state->__pyx_tuple__951);
  Py_VISIT(traverse_module_state->__pyx_tuple__953);
  Py_VISIT(traverse_module_state->__pyx_tuple__954);
  Py_VISIT(traverse_module_state->__pyx_tuple__956);
  Py_VISIT(traverse_module_state->__pyx_tuple__958);
  Py_VISIT(traverse_module_state->__pyx_tuple__960);
  Py_VISIT(traverse_module_state->__pyx_tuple__961);
  Py_VISIT(traverse_module_state->__pyx_tuple__963);
  Py_VISIT(traverse_module_state->__pyx_tuple__964);
  Py_VISIT(traverse_module_state->__pyx_tuple__966);
  Py_VISIT(traverse_module_state->__pyx_tuple__968);
  Py_VISIT(traverse_module_state->__pyx_tuple__970);
  Py_VISIT(traverse_module_state->__pyx_tuple__971);
  Py_VISIT(traverse_module_state->__pyx_tuple__975);
  Py_VISIT(traverse_module_state->__pyx_codeobj__14);
  Py_VISIT(traverse_module_state->__pyx_codeobj__15);
  Py_VISIT(traverse_module_state->__pyx_codeobj__16);
  Py_VISIT(traverse_module_state->__pyx_codeobj__17);
  Py_VISIT(traverse_module_state->__pyx_codeobj__19);
  Py_VISIT(traverse_module_state->__pyx_codeobj__20);
  Py_VISIT(traverse_module_state->__pyx_codeobj__22);
  Py_VISIT(traverse_module_state->__pyx_codeobj__25);
  Py_VISIT(traverse_module_state->__pyx_codeobj__26);
  Py_VISIT(traverse_module_state->__pyx_codeobj__27);
  Py_VISIT(traverse_module_state->__pyx_codeobj__28);
  Py_VISIT(traverse_module_state->__pyx_codeobj__29);
  Py_VISIT(traverse_module_state->__pyx_codeobj__30);
  Py_VISIT(traverse_module_state->__pyx_codeobj__31);
  Py_VISIT(traverse_module_state->__pyx_codeobj__32);
  Py_VISIT(traverse_module_state->__pyx_codeobj__34);
  Py_VISIT(traverse_module_state->__pyx_codeobj__35);
  Py_VISIT(traverse_module_state->__pyx_codeobj__36);
  Py_VISIT(traverse_module_state->__pyx_codeobj__38);
  Py_VISIT(traverse_module_state->__pyx_codeobj__39);
  Py_VISIT(traverse_module_state->__pyx_codeobj__41);
  Py_VISIT(traverse_module_state->__pyx_codeobj__42);
  Py_VISIT(traverse_module_state->__pyx_codeobj__43);
  Py_VISIT(traverse_module_state->__pyx_codeobj__44);
  Py_VISIT(traverse_module_state->__pyx_codeobj__45);
  Py_VISIT(traverse_module_state->__pyx_codeobj__46);
  Py_VISIT(traverse_module_state->__pyx_codeobj__47);
  Py_VISIT(traverse_module_state->__pyx_codeobj__48);
  Py_VISIT(traverse_module_state->__pyx_codeobj__49);
  Py_VISIT(traverse_module_state->__pyx_codeobj__50);
  Py_VISIT(traverse_module_state->__pyx_codeobj__51);
  Py_VISIT(traverse_module_state->__pyx_codeobj__52);
  Py_VISIT(traverse_module_state->__pyx_codeobj__53);
  Py_VISIT(traverse_module_state->__pyx_codeobj__54);
  Py_VISIT(traverse_module_state->__pyx_codeobj__55);
  Py_VISIT(traverse_module_state->__pyx_codeobj__56);
  Py_VISIT(traverse_module_state->__pyx_codeobj__57);
  Py_VISIT(traverse_module_state->__pyx_codeobj__58);
  Py_VISIT(traverse_module_state->__pyx_codeobj__60);
  Py_VISIT(traverse_module_state->__pyx_codeobj__61);
  Py_VISIT(traverse_module_state->__pyx_codeobj__62);
  Py_VISIT(traverse_module_state->__pyx_codeobj__64);
  Py_VISIT(traverse_module_state->__pyx_codeobj__66);
  Py_VISIT(traverse_module_state->__pyx_codeobj__67);
  Py_VISIT(traverse_module_state->__pyx_codeobj__68);
  Py_VISIT(traverse_module_state->__pyx_codeobj__69);
  Py_VISIT(traverse_module_state->__pyx_codeobj__70);
  Py_VISIT(traverse_module_state->__pyx_codeobj__71);
  Py_VISIT(traverse_module_state->__pyx_codeobj__72);
  Py_VISIT(traverse_module_state->__pyx_codeobj__73);
  Py_VISIT(traverse_module_state->__pyx_codeobj__74);
  Py_VISIT(traverse_module_state->__pyx_codeobj__75);
  Py_VISIT(traverse_module_state->__pyx_codeobj__76);
  Py_VISIT(traverse_module_state->__pyx_codeobj__77);
  Py_VISIT(traverse_module_state->__pyx_codeobj__78);
  Py_VISIT(traverse_module_state->__pyx_codeobj__79);
  Py_VISIT(traverse_module_state->__pyx_codeobj__80);
  Py_VISIT(traverse_module_state->__pyx_codeobj__81);
  Py_VISIT(traverse_module_state->__pyx_codeobj__82);
  Py_VISIT(traverse_module_state->__pyx_codeobj__83);
  Py_VISIT(traverse_module_state->__pyx_codeobj__84);
  Py_VISIT(traverse_module_state->__pyx_codeobj__85);
  Py_VISIT(traverse_module_state->__pyx_codeobj__87);
  Py_VISIT(traverse_module_state->__pyx_codeobj__88);
  Py_VISIT(traverse_module_state->__pyx_codeobj__89);
  Py_VISIT(traverse_module_state->__pyx_codeobj__90);
  Py_VISIT(traverse_module_state->__pyx_codeobj__91);
  Py_VISIT(traverse_module_state->__pyx_codeobj__93);
  Py_VISIT(traverse_module_state->__pyx_codeobj__95);
  Py_VISIT(traverse_module_state->__pyx_codeobj__96);
  Py_VISIT(traverse_module_state->__pyx_codeobj__97);
  Py_VISIT(traverse_module_state->__pyx_codeobj__98);
  Py_VISIT(traverse_module_state->__pyx_codeobj__99);
  Py_VISIT(traverse_module_state->__pyx_codeobj__100);
  Py_VISIT(traverse_module_state->__pyx_codeobj__101);
  Py_VISIT(traverse_module_state->__pyx_codeobj__102);
  Py_VISIT(traverse_module_state->__pyx_codeobj__103);
  Py_VISIT(traverse_module_state->__pyx_codeobj__104);
  Py_VISIT(traverse_module_state->__pyx_codeobj__105);
  Py_VISIT(traverse_module_state->__pyx_codeobj__106);
  Py_VISIT(traverse_module_state->__pyx_codeobj__107);
  Py_VISIT(traverse_module_state->__pyx_codeobj__108);
  Py_VISIT(traverse_module_state->__pyx_codeobj__109);
  Py_VISIT(traverse_module_state->__pyx_codeobj__110);
  Py_VISIT(traverse_module_state->__pyx_codeobj__111);
  Py_VISIT(traverse_module_state->__pyx_codeobj__112);
  Py_VISIT(traverse_module_state->__pyx_codeobj__113);
  Py_VISIT(traverse_module_state->__pyx_codeobj__114);
  Py_VISIT(traverse_module_state->__pyx_codeobj__115);
  Py_VISIT(traverse_module_state->__pyx_codeobj__116);
  Py_VISIT(traverse_module_state->__pyx_codeobj__117);
  Py_VISIT(traverse_module_state->__pyx_codeobj__118);
  Py_VISIT(traverse_module_state->__pyx_codeobj__119);
  Py_VISIT(traverse_module_state->__pyx_codeobj__120);
  Py_VISIT(traverse_module_state->__pyx_codeobj__121);
  Py_VISIT(traverse_module_state->__pyx_codeobj__122);
  Py_VISIT(traverse_module_state->__pyx_codeobj__123);
  Py_VISIT(traverse_module_state->__pyx_codeobj__124);
  Py_VISIT(traverse_module_state->__pyx_codeobj__125);
  Py_VISIT(traverse_module_state->__pyx_codeobj__126);
  Py_VISIT(traverse_module_state->__pyx_codeobj__127);
  Py_VISIT(traverse_module_state->__pyx_codeobj__128);
  Py_VISIT(traverse_module_state->__pyx_codeobj__130);
  Py_VISIT(traverse_module_state->__pyx_codeobj__132);
  Py_VISIT(traverse_module_state->__pyx_codeobj__134);
  Py_VISIT(traverse_module_state->__pyx_codeobj__135);
  Py_VISIT(traverse_module_state->__pyx_codeobj__136);
  Py_VISIT(traverse_module_state->__pyx_codeobj__137);
  Py_VISIT(traverse_module_state->__pyx_codeobj__138);
  Py_VISIT(traverse_module_state->__pyx_codeobj__139);
  Py_VISIT(traverse_module_state->__pyx_codeobj__140);
  Py_VISIT(traverse_module_state->__pyx_codeobj__141);
  Py_VISIT(traverse_module_state->__pyx_codeobj__142);
  Py_VISIT(traverse_module_state->__pyx_codeobj__143);
  Py_VISIT(traverse_module_state->__pyx_codeobj__144);
  Py_VISIT(traverse_module_state->__pyx_codeobj__145);
  Py_VISIT(traverse_module_state->__pyx_codeobj__146);
  Py_VISIT(traverse_module_state->__pyx_codeobj__147);
  Py_VISIT(traverse_module_state->__pyx_codeobj__148);
  Py_VISIT(traverse_module_state->__pyx_codeobj__149);
  Py_VISIT(traverse_module_state->__pyx_codeobj__150);
  Py_VISIT(traverse_module_state->__pyx_codeobj__151);
  Py_VISIT(traverse_module_state->__pyx_codeobj__152);
  Py_VISIT(traverse_module_state->__pyx_codeobj__153);
  Py_VISIT(traverse_module_state->__pyx_codeobj__154);
  Py_VISIT(traverse_module_state->__pyx_codeobj__155);
  Py_VISIT(traverse_module_state->__pyx_codeobj__157);
  Py_VISIT(traverse_module_state->__pyx_codeobj__158);
  Py_VISIT(traverse_module_state->__pyx_codeobj__159);
  Py_VISIT(traverse_module_state->__pyx_codeobj__160);
  Py_VISIT(traverse_module_state->__pyx_codeobj__161);
  Py_VISIT(traverse_module_state->__pyx_codeobj__162);
  Py_VISIT(traverse_module_state->__pyx_codeobj__163);
  Py_VISIT(traverse_module_state->__pyx_codeobj__164);
  Py_VISIT(traverse_module_state->__pyx_codeobj__165);
  Py_VISIT(traverse_module_state->__pyx_codeobj__166);
  Py_VISIT(traverse_module_state->__pyx_codeobj__167);
  Py_VISIT(traverse_module_state->__pyx_codeobj__168);
  Py_VISIT(traverse_module_state->__pyx_codeobj__169);
  Py_VISIT(traverse_module_state->__pyx_codeobj__170);
  Py_VISIT(traverse_module_state->__pyx_codeobj__171);
  Py_VISIT(traverse_module_state->__pyx_codeobj__172);
  Py_VISIT(traverse_module_state->__pyx_codeobj__173);
  Py_VISIT(traverse_module_state->__pyx_codeobj__174);
  Py_VISIT(traverse_module_state->__pyx_codeobj__175);
  Py_VISIT(traverse_module_state->__pyx_codeobj__176);
  Py_VISIT(traverse_module_state->__pyx_codeobj__177);
  Py_VISIT(traverse_module_state->__pyx_codeobj__178);
  Py_VISIT(traverse_module_state->__pyx_codeobj__179);
  Py_VISIT(traverse_module_state->__pyx_codeobj__180);
  Py_VISIT(traverse_module_state->__pyx_codeobj__181);
  Py_VISIT(traverse_module_state->__pyx_codeobj__182);
  Py_VISIT(traverse_module_state->__pyx_codeobj__183);
  Py_VISIT(traverse_module_state->__pyx_codeobj__184);
  Py_VISIT(traverse_module_state->__pyx_codeobj__185);
  Py_VISIT(traverse_module_state->__pyx_codeobj__186);
  Py_VISIT(traverse_module_state->__pyx_codeobj__187);
  Py_VISIT(traverse_module_state->__pyx_codeobj__188);
  Py_VISIT(traverse_module_state->__pyx_codeobj__189);
  Py_VISIT(traverse_module_state->__pyx_codeobj__190);
  Py_VISIT(traverse_module_state->__pyx_codeobj__191);
  Py_VISIT(traverse_module_state->__pyx_codeobj__192);
  Py_VISIT(traverse_module_state->__pyx_codeobj__193);
  Py_VISIT(traverse_module_state->__pyx_codeobj__195);
  Py_VISIT(traverse_module_state->__pyx_codeobj__197);
  Py_VISIT(traverse_module_state->__pyx_codeobj__199);
  Py_VISIT(traverse_module_state->__pyx_codeobj__202);
  Py_VISIT(traverse_module_state->__pyx_codeobj__204);
  Py_VISIT(traverse_module_state->__pyx_codeobj__205);
  Py_VISIT(traverse_module_state->__pyx_codeobj__206);
  Py_VISIT(traverse_module_state->__pyx_codeobj__208);
  Py_VISIT(traverse_module_state->__pyx_codeobj__209);
  Py_VISIT(traverse_module_state->__pyx_codeobj__210);
  Py_VISIT(traverse_module_state->__pyx_codeobj__212);
  Py_VISIT(traverse_module_state->__pyx_codeobj__213);
  Py_VISIT(traverse_module_state->__pyx_codeobj__215);
  Py_VISIT(traverse_module_state->__pyx_codeobj__216);
  Py_VISIT(traverse_module_state->__pyx_codeobj__217);
  Py_VISIT(traverse_module_state->__pyx_codeobj__219);
  Py_VISIT(traverse_module_state->__pyx_codeobj__222);
  Py_VISIT(traverse_module_state->__pyx_codeobj__224);
  Py_VISIT(traverse_module_state->__pyx_codeobj__225);
  Py_VISIT(traverse_module_state->__pyx_codeobj__226);
  Py_VISIT(traverse_module_state->__pyx_codeobj__227);
  Py_VISIT(traverse_module_state->__pyx_codeobj__229);
  Py_VISIT(traverse_module_state->__pyx_codeobj__230);
  Py_VISIT(traverse_module_state->__pyx_codeobj__231);
  Py_VISIT(traverse_module_state->__pyx_codeobj__232);
  Py_VISIT(traverse_module_state->__pyx_codeobj__234);
  Py_VISIT(traverse_module_state->__pyx_codeobj__237);
  Py_VISIT(traverse_module_state->__pyx_codeobj__239);
  Py_VISIT(traverse_module_state->__pyx_codeobj__240);
  Py_VISIT(traverse_module_state->__pyx_codeobj__241);
  Py_VISIT(traverse_module_state->__pyx_codeobj__242);
  Py_VISIT(traverse_module_state->__pyx_codeobj__243);
  Py_VISIT(traverse_module_state->__pyx_codeobj__244);
  Py_VISIT(traverse_module_state->__pyx_codeobj__245);
  Py_VISIT(traverse_module_state->__pyx_codeobj__246);
  Py_VISIT(traverse_module_state->__pyx_codeobj__247);
  Py_VISIT(traverse_module_state->__pyx_codeobj__248);
  Py_VISIT(traverse_module_state->__pyx_codeobj__249);
  Py_VISIT(traverse_module_state->__pyx_codeobj__251);
  Py_VISIT(traverse_module_state->__pyx_codeobj__253);
  Py_VISIT(traverse_module_state->__pyx_codeobj__254);
  Py_VISIT(traverse_module_state->__pyx_codeobj__255);
  Py_VISIT(traverse_module_state->__pyx_codeobj__256);
  Py_VISIT(traverse_module_state->__pyx_codeobj__257);
  Py_VISIT(traverse_module_state->__pyx_codeobj__259);
  Py_VISIT(traverse_module_state->__pyx_codeobj__260);
  Py_VISIT(traverse_module_state->__pyx_codeobj__261);
  Py_VISIT(traverse_module_state->__pyx_codeobj__263);
  Py_VISIT(traverse_module_state->__pyx_codeobj__265);
  Py_VISIT(traverse_module_state->__pyx_codeobj__267);
  Py_VISIT(traverse_module_state->__pyx_codeobj__269);
  Py_VISIT(traverse_module_state->__pyx_codeobj__271);
  Py_VISIT(traverse_module_state->__pyx_codeobj__273);
  Py_VISIT(traverse_module_state->__pyx_codeobj__274);
  Py_VISIT(traverse_module_state->__pyx_codeobj__276);
  Py_VISIT(traverse_module_state->__pyx_codeobj__279);
  Py_VISIT(traverse_module_state->__pyx_codeobj__281);
  Py_VISIT(traverse_module_state->__pyx_codeobj__283);
  Py_VISIT(traverse_module_state->__pyx_codeobj__286);
  Py_VISIT(traverse_module_state->__pyx_codeobj__289);
  Py_VISIT(traverse_module_state->__pyx_codeobj__291);
  Py_VISIT(traverse_module_state->__pyx_codeobj__292);
  Py_VISIT(traverse_module_state->__pyx_codeobj__293);
  Py_VISIT(traverse_module_state->__pyx_codeobj__295);
  Py_VISIT(traverse_module_state->__pyx_codeobj__296);
  Py_VISIT(traverse_module_state->__pyx_codeobj__297);
  Py_VISIT(traverse_module_state->__pyx_codeobj__298);
  Py_VISIT(traverse_module_state->__pyx_codeobj__300);
  Py_VISIT(traverse_module_state->__pyx_codeobj__302);
  Py_VISIT(traverse_module_state->__pyx_codeobj__303);
  Py_VISIT(traverse_module_state->__pyx_codeobj__304);
  Py_VISIT(traverse_module_state->__pyx_codeobj__306);
  Py_VISIT(traverse_module_state->__pyx_codeobj__307);
  Py_VISIT(traverse_module_state->__pyx_codeobj__308);
  Py_VISIT(traverse_module_state->__pyx_codeobj__310);
  Py_VISIT(traverse_module_state->__pyx_codeobj__311);
  Py_VISIT(traverse_module_state->__pyx_codeobj__312);
  Py_VISIT(traverse_module_state->__pyx_codeobj__313);
  Py_VISIT(traverse_module_state->__pyx_codeobj__314);
  Py_VISIT(traverse_module_state->__pyx_codeobj__316);
  Py_VISIT(traverse_module_state->__pyx_codeobj__317);
  Py_VISIT(traverse_module_state->__pyx_codeobj__318);
  Py_VISIT(traverse_module_state->__pyx_codeobj__319);
  Py_VISIT(traverse_module_state->__pyx_codeobj__320);
  Py_VISIT(traverse_module_state->__pyx_codeobj__321);
  Py_VISIT(traverse_module_state->__pyx_codeobj__322);
  Py_VISIT(traverse_module_state->__pyx_codeobj__323);
  Py_VISIT(traverse_module_state->__pyx_codeobj__325);
  Py_VISIT(traverse_module_state->__pyx_codeobj__326);
  Py_VISIT(traverse_module_state->__pyx_codeobj__327);
  Py_VISIT(traverse_module_state->__pyx_codeobj__328);
  Py_VISIT(traverse_module_state->__pyx_codeobj__330);
  Py_VISIT(traverse_module_state->__pyx_codeobj__331);
  Py_VISIT(traverse_module_state->__pyx_codeobj__332);
  Py_VISIT(traverse_module_state->__pyx_codeobj__333);
  Py_VISIT(traverse_module_state->__pyx_codeobj__334);
  Py_VISIT(traverse_module_state->__pyx_codeobj__335);
  Py_VISIT(traverse_module_state->__pyx_codeobj__336);
  Py_VISIT(traverse_module_state->__pyx_codeobj__337);
  Py_VISIT(traverse_module_state->__pyx_codeobj__338);
  Py_VISIT(traverse_module_state->__pyx_codeobj__339);
  Py_VISIT(traverse_module_state->__pyx_codeobj__340);
  Py_VISIT(traverse_module_state->__pyx_codeobj__341);
  Py_VISIT(traverse_module_state->__pyx_codeobj__342);
  Py_VISIT(traverse_module_state->__pyx_codeobj__343);
  Py_VISIT(traverse_module_state->__pyx_codeobj__345);
  Py_VISIT(traverse_module_state->__pyx_codeobj__346);
  Py_VISIT(traverse_module_state->__pyx_codeobj__347);
  Py_VISIT(traverse_module_state->__pyx_codeobj__348);
  Py_VISIT(traverse_module_state->__pyx_codeobj__349);
  Py_VISIT(traverse_module_state->__pyx_codeobj__350);
  Py_VISIT(traverse_module_state->__pyx_codeobj__351);
  Py_VISIT(traverse_module_state->__pyx_codeobj__352);
  Py_VISIT(traverse_module_state->__pyx_codeobj__353);
  Py_VISIT(traverse_module_state->__pyx_codeobj__354);
  Py_VISIT(traverse_module_state->__pyx_codeobj__356);
  Py_VISIT(traverse_module_state->__pyx_codeobj__358);
  Py_VISIT(traverse_module_state->__pyx_codeobj__359);
  Py_VISIT(traverse_module_state->__pyx_codeobj__360);
  Py_VISIT(traverse_module_state->__pyx_codeobj__361);
  Py_VISIT(traverse_module_state->__pyx_codeobj__363);
  Py_VISIT(traverse_module_state->__pyx_codeobj__366);
  Py_VISIT(traverse_module_state->__pyx_codeobj__367);
  Py_VISIT(traverse_module_state->__pyx_codeobj__368);
  Py_VISIT(traverse_module_state->__pyx_codeobj__369);
  Py_VISIT(traverse_module_state->__pyx_codeobj__370);
  Py_VISIT(traverse_module_state->__pyx_codeobj__371);
  Py_VISIT(traverse_module_state->__pyx_codeobj__372);
  Py_VISIT(traverse_module_state->__pyx_codeobj__373);
  Py_VISIT(traverse_module_state->__pyx_codeobj__374);
  Py_VISIT(traverse_module_state->__pyx_codeobj__375);
  Py_VISIT(traverse_module_state->__pyx_codeobj__376);
  Py_VISIT(traverse_module_state->__pyx_codeobj__377);
  Py_VISIT(traverse_module_state->__pyx_codeobj__378);
  Py_VISIT(traverse_module_state->__pyx_codeobj__379);
  Py_VISIT(traverse_module_state->__pyx_codeobj__380);
  Py_VISIT(traverse_module_state->__pyx_codeobj__381);
  Py_VISIT(traverse_module_state->__pyx_codeobj__382);
  Py_VISIT(traverse_module_state->__pyx_codeobj__384);
  Py_VISIT(traverse_module_state->__pyx_codeobj__386);
  Py_VISIT(traverse_module_state->__pyx_codeobj__387);
  Py_VISIT(traverse_module_state->__pyx_codeobj__388);
  Py_VISIT(traverse_module_state->__pyx_codeobj__389);
  Py_VISIT(traverse_module_state->__pyx_codeobj__390);
  Py_VISIT(traverse_module_state->__pyx_codeobj__391);
  Py_VISIT(traverse_module_state->__pyx_codeobj__392);
  Py_VISIT(traverse_module_state->__pyx_codeobj__393);
  Py_VISIT(traverse_module_state->__pyx_codeobj__394);
  Py_VISIT(traverse_module_state->__pyx_codeobj__395);
  Py_VISIT(traverse_module_state->__pyx_codeobj__396);
  Py_VISIT(traverse_module_state->__pyx_codeobj__397);
  Py_VISIT(traverse_module_state->__pyx_codeobj__398);
  Py_VISIT(traverse_module_state->__pyx_codeobj__399);
  Py_VISIT(traverse_module_state->__pyx_codeobj__400);
  Py_VISIT(traverse_module_state->__pyx_codeobj__401);
  Py_VISIT(traverse_module_state->__pyx_codeobj__402);
  Py_VISIT(traverse_module_state->__pyx_codeobj__403);
  Py_VISIT(traverse_module_state->__pyx_codeobj__404);
  Py_VISIT(traverse_module_state->__pyx_codeobj__405);
  Py_VISIT(traverse_module_state->__pyx_codeobj__406);
  Py_VISIT(traverse_module_state->__pyx_codeobj__407);
  Py_VISIT(traverse_module_state->__pyx_codeobj__408);
  Py_VISIT(traverse_module_state->__pyx_codeobj__409);
  Py_VISIT(traverse_module_state->__pyx_codeobj__410);
  Py_VISIT(traverse_module_state->__pyx_codeobj__411);
  Py_VISIT(traverse_module_state->__pyx_codeobj__412);
  Py_VISIT(traverse_module_state->__pyx_codeobj__413);
  Py_VISIT(traverse_module_state->__pyx_codeobj__414);
  Py_VISIT(traverse_module_state->__pyx_codeobj__415);
  Py_VISIT(traverse_module_state->__pyx_codeobj__416);
  Py_VISIT(traverse_module_state->__pyx_codeobj__417);
  Py_VISIT(traverse_module_state->__pyx_codeobj__418);
  Py_VISIT(traverse_module_state->__pyx_codeobj__419);
  Py_VISIT(traverse_module_state->__pyx_codeobj__420);
  Py_VISIT(traverse_module_state->__pyx_codeobj__421);
  Py_VISIT(traverse_module_state->__pyx_codeobj__422);
  Py_VISIT(traverse_module_state->__pyx_codeobj__423);
  Py_VISIT(traverse_module_state->__pyx_codeobj__424);
  Py_VISIT(traverse_module_state->__pyx_codeobj__425);
  Py_VISIT(traverse_module_state->__pyx_codeobj__426);
  Py_VISIT(traverse_module_state->__pyx_codeobj__427);
  Py_VISIT(traverse_module_state->__pyx_codeobj__428);
  Py_VISIT(traverse_module_state->__pyx_codeobj__429);
  Py_VISIT(traverse_module_state->__pyx_codeobj__430);
  Py_VISIT(traverse_module_state->__pyx_codeobj__431);
  Py_VISIT(traverse_module_state->__pyx_codeobj__432);
  Py_VISIT(traverse_module_state->__pyx_codeobj__433);
  Py_VISIT(traverse_module_state->__pyx_codeobj__434);
  Py_VISIT(traverse_module_state->__pyx_codeobj__435);
  Py_VISIT(traverse_module_state->__pyx_codeobj__436);
  Py_VISIT(traverse_module_state->__pyx_codeobj__437);
  Py_VISIT(traverse_module_state->__pyx_codeobj__438);
  Py_VISIT(traverse_module_state->__pyx_codeobj__439);
  Py_VISIT(traverse_module_state->__pyx_codeobj__440);
  Py_VISIT(traverse_module_state->__pyx_codeobj__441);
  Py_VISIT(traverse_module_state->__pyx_codeobj__442);
  Py_VISIT(traverse_module_state->__pyx_codeobj__443);
  Py_VISIT(traverse_module_state->__pyx_codeobj__444);
  Py_VISIT(traverse_module_state->__pyx_codeobj__445);
  Py_VISIT(traverse_module_state->__pyx_codeobj__446);
  Py_VISIT(traverse_module_state->__pyx_codeobj__447);
  Py_VISIT(traverse_module_state->__pyx_codeobj__448);
  Py_VISIT(traverse_module_state->__pyx_codeobj__449);
  Py_VISIT(traverse_module_state->__pyx_codeobj__450);
  Py_VISIT(traverse_module_state->__pyx_codeobj__451);
  Py_VISIT(traverse_module_state->__pyx_codeobj__452);
  Py_VISIT(traverse_module_state->__pyx_codeobj__453);
  Py_VISIT(traverse_module_state->__pyx_codeobj__454);
  Py_VISIT(traverse_module_state->__pyx_codeobj__455);
  Py_VISIT(traverse_module_state->__pyx_codeobj__456);
  Py_VISIT(traverse_module_state->__pyx_codeobj__457);
  Py_VISIT(traverse_module_state->__pyx_codeobj__458);
  Py_VISIT(traverse_module_state->__pyx_codeobj__459);
  Py_VISIT(traverse_module_state->__pyx_codeobj__460);
  Py_VISIT(traverse_module_state->__pyx_codeobj__461);
  Py_VISIT(traverse_module_state->__pyx_codeobj__462);
  Py_VISIT(traverse_module_state->__pyx_codeobj__463);
  Py_VISIT(traverse_module_state->__pyx_codeobj__464);
  Py_VISIT(traverse_module_state->__pyx_codeobj__465);
  Py_VISIT(traverse_module_state->__pyx_codeobj__466);
  Py_VISIT(traverse_module_state->__pyx_codeobj__467);
  Py_VISIT(traverse_module_state->__pyx_codeobj__468);
  Py_VISIT(traverse_module_state->__pyx_codeobj__469);
  Py_VISIT(traverse_module_state->__pyx_codeobj__470);
  Py_VISIT(traverse_module_state->__pyx_codeobj__471);
  Py_VISIT(traverse_module_state->__pyx_codeobj__472);
  Py_VISIT(traverse_module_state->__pyx_codeobj__473);
  Py_VISIT(traverse_module_state->__pyx_codeobj__474);
  Py_VISIT(traverse_module_state->__pyx_codeobj__475);
  Py_VISIT(traverse_module_state->__pyx_codeobj__476);
  Py_VISIT(traverse_module_state->__pyx_codeobj__477);
  Py_VISIT(traverse_module_state->__pyx_codeobj__478);
  Py_VISIT(traverse_module_state->__pyx_codeobj__479);
  Py_VISIT(traverse_module_state->__pyx_codeobj__480);
  Py_VISIT(traverse_module_state->__pyx_codeobj__481);
  Py_VISIT(traverse_module_state->__pyx_codeobj__482);
  Py_VISIT(traverse_module_state->__pyx_codeobj__483);
  Py_VISIT(traverse_module_state->__pyx_codeobj__484);
  Py_VISIT(traverse_module_state->__pyx_codeobj__485);
  Py_VISIT(traverse_module_state->__pyx_codeobj__486);
  Py_VISIT(traverse_module_state->__pyx_codeobj__487);
  Py_VISIT(traverse_module_state->__pyx_codeobj__488);
  Py_VISIT(traverse_module_state->__pyx_codeobj__489);
  Py_VISIT(traverse_module_state->__pyx_codeobj__490);
  Py_VISIT(traverse_module_state->__pyx_codeobj__491);
  Py_VISIT(traverse_module_state->__pyx_codeobj__492);
  Py_VISIT(traverse_module_state->__pyx_codeobj__494);
  Py_VISIT(traverse_module_state->__pyx_codeobj__496);
  Py_VISIT(traverse_module_state->__pyx_codeobj__497);
  Py_VISIT(traverse_module_state->__pyx_codeobj__498);
  Py_VISIT(traverse_module_state->__pyx_codeobj__499);
  Py_VISIT(traverse_module_state->__pyx_codeobj__501);
  Py_VISIT(traverse_module_state->__pyx_codeobj__502);
  Py_VISIT(traverse_module_state->__pyx_codeobj__503);
  Py_VISIT(traverse_module_state->__pyx_codeobj__504);
  Py_VISIT(traverse_module_state->__pyx_codeobj__505);
  Py_VISIT(traverse_module_state->__pyx_codeobj__506);
  Py_VISIT(traverse_module_state->__pyx_codeobj__507);
  Py_VISIT(traverse_module_state->__pyx_codeobj__508);
  Py_VISIT(traverse_module_state->__pyx_codeobj__509);
  Py_VISIT(traverse_module_state->__pyx_codeobj__510);
  Py_VISIT(traverse_module_state->__pyx_codeobj__511);
  Py_VISIT(traverse_module_state->__pyx_codeobj__512);
  Py_VISIT(traverse_module_state->__pyx_codeobj__513);
  Py_VISIT(traverse_module_state->__pyx_codeobj__514);
  Py_VISIT(traverse_module_state->__pyx_codeobj__515);
  Py_VISIT(traverse_module_state->__pyx_codeobj__516);
  Py_VISIT(traverse_module_state->__pyx_codeobj__517);
  Py_VISIT(traverse_module_state->__pyx_codeobj__518);
  Py_VISIT(traverse_module_state->__pyx_codeobj__519);
  Py_VISIT(traverse_module_state->__pyx_codeobj__520);
  Py_VISIT(traverse_module_state->__pyx_codeobj__521);
  Py_VISIT(traverse_module_state->__pyx_codeobj__522);
  Py_VISIT(traverse_module_state->__pyx_codeobj__523);
  Py_VISIT(traverse_module_state->__pyx_codeobj__524);
  Py_VISIT(traverse_module_state->__pyx_codeobj__525);
  Py_VISIT(traverse_module_state->__pyx_codeobj__526);
  Py_VISIT(traverse_module_state->__pyx_codeobj__527);
  Py_VISIT(traverse_module_state->__pyx_codeobj__528);
  Py_VISIT(traverse_module_state->__pyx_codeobj__529);
  Py_VISIT(traverse_module_state->__pyx_codeobj__530);
  Py_VISIT(traverse_module_state->__pyx_codeobj__531);
  Py_VISIT(traverse_module_state->__pyx_codeobj__532);
  Py_VISIT(traverse_module_state->__pyx_codeobj__533);
  Py_VISIT(traverse_module_state->__pyx_codeobj__534);
  Py_VISIT(traverse_module_state->__pyx_codeobj__535);
  Py_VISIT(traverse_module_state->__pyx_codeobj__537);
  Py_VISIT(traverse_module_state->__pyx_codeobj__539);
  Py_VISIT(traverse_module_state->__pyx_codeobj__541);
  Py_VISIT(traverse_module_state->__pyx_codeobj__543);
  Py_VISIT(traverse_module_state->__pyx_codeobj__544);
  Py_VISIT(traverse_module_state->__pyx_codeobj__545);
  Py_VISIT(traverse_module_state->__pyx_codeobj__546);
  Py_VISIT(traverse_module_state->__pyx_codeobj__547);
  Py_VISIT(traverse_module_state->__pyx_codeobj__548);
  Py_VISIT(traverse_module_state->__pyx_codeobj__550);
  Py_VISIT(traverse_module_state->__pyx_codeobj__552);
  Py_VISIT(traverse_module_state->__pyx_codeobj__553);
  Py_VISIT(traverse_module_state->__pyx_codeobj__555);
  Py_VISIT(traverse_module_state->__pyx_codeobj__557);
  Py_VISIT(traverse_module_state->__pyx_codeobj__560);
  Py_VISIT(traverse_module_state->__pyx_codeobj__561);
  Py_VISIT(traverse_module_state->__pyx_codeobj__562);
  Py_VISIT(traverse_module_state->__pyx_codeobj__563);
  Py_VISIT(traverse_module_state->__pyx_codeobj__564);
  Py_VISIT(traverse_module_state->__pyx_codeobj__565);
  Py_VISIT(traverse_module_state->__pyx_codeobj__566);
  Py_VISIT(traverse_module_state->__pyx_codeobj__567);
  Py_VISIT(traverse_module_state->__pyx_codeobj__568);
  Py_VISIT(traverse_module_state->__pyx_codeobj__569);
  Py_VISIT(traverse_module_state->__pyx_codeobj__570);
  Py_VISIT(traverse_module_state->__pyx_codeobj__571);
  Py_VISIT(traverse_module_state->__pyx_codeobj__572);
  Py_VISIT(traverse_module_state->__pyx_codeobj__573);
  Py_VISIT(traverse_module_state->__pyx_codeobj__575);
  Py_VISIT(traverse_module_state->__pyx_codeobj__577);
  Py_VISIT(traverse_module_state->__pyx_codeobj__578);
  Py_VISIT(traverse_module_state->__pyx_codeobj__579);
  Py_VISIT(traverse_module_state->__pyx_codeobj__580);
  Py_VISIT(traverse_module_state->__pyx_codeobj__582);
  Py_VISIT(traverse_module_state->__pyx_codeobj__583);
  Py_VISIT(traverse_module_state->__pyx_codeobj__584);
  Py_VISIT(traverse_module_state->__pyx_codeobj__585);
  Py_VISIT(traverse_module_state->__pyx_codeobj__586);
  Py_VISIT(traverse_module_state->__pyx_codeobj__587);
  Py_VISIT(traverse_module_state->__pyx_codeobj__588);
  Py_VISIT(traverse_module_state->__pyx_codeobj__589);
  Py_VISIT(traverse_module_state->__pyx_codeobj__590);
  Py_VISIT(traverse_module_state->__pyx_codeobj__591);
  Py_VISIT(traverse_module_state->__pyx_codeobj__592);
  Py_VISIT(traverse_module_state->__pyx_codeobj__593);
  Py_VISIT(traverse_module_state->__pyx_codeobj__595);
  Py_VISIT(traverse_module_state->__pyx_codeobj__596);
  Py_VISIT(traverse_module_state->__pyx_codeobj__597);
  Py_VISIT(traverse_module_state->__pyx_codeobj__598);
  Py_VISIT(traverse_module_state->__pyx_codeobj__599);
  Py_VISIT(traverse_module_state->__pyx_codeobj__600);
  Py_VISIT(traverse_module_state->__pyx_codeobj__601);
  Py_VISIT(traverse_module_state->__pyx_codeobj__602);
  Py_VISIT(traverse_module_state->__pyx_codeobj__603);
  Py_VISIT(traverse_module_state->__pyx_codeobj__604);
  Py_VISIT(traverse_module_state->__pyx_codeobj__605);
  Py_VISIT(traverse_module_state->__pyx_codeobj__606);
  Py_VISIT(traverse_module_state->__pyx_codeobj__607);
  Py_VISIT(traverse_module_state->__pyx_codeobj__608);
  Py_VISIT(traverse_module_state->__pyx_codeobj__609);
  Py_VISIT(traverse_module_state->__pyx_codeobj__610);
  Py_VISIT(traverse_module_state->__pyx_codeobj__611);
  Py_VISIT(traverse_module_state->__pyx_codeobj__612);
  Py_VISIT(traverse_module_state->__pyx_codeobj__613);
  Py_VISIT(traverse_module_state->__pyx_codeobj__614);
  Py_VISIT(traverse_module_state->__pyx_codeobj__615);
  Py_VISIT(traverse_module_state->__pyx_codeobj__616);
  Py_VISIT(traverse_module_state->__pyx_codeobj__617);
  Py_VISIT(traverse_module_state->__pyx_codeobj__618);
  Py_VISIT(traverse_module_state->__pyx_codeobj__619);
  Py_VISIT(traverse_module_state->__pyx_codeobj__620);
  Py_VISIT(traverse_module_state->__pyx_codeobj__621);
  Py_VISIT(traverse_module_state->__pyx_codeobj__622);
  Py_VISIT(traverse_module_state->__pyx_codeobj__623);
  Py_VISIT(traverse_module_state->__pyx_codeobj__624);
  Py_VISIT(traverse_module_state->__pyx_codeobj__625);
  Py_VISIT(traverse_module_state->__pyx_codeobj__626);
  Py_VISIT(traverse_module_state->__pyx_codeobj__627);
  Py_VISIT(traverse_module_state->__pyx_codeobj__628);
  Py_VISIT(traverse_module_state->__pyx_codeobj__629);
  Py_VISIT(traverse_module_state->__pyx_codeobj__631);
  Py_VISIT(traverse_module_state->__pyx_codeobj__633);
  Py_VISIT(traverse_module_state->__pyx_codeobj__634);
  Py_VISIT(traverse_module_state->__pyx_codeobj__635);
  Py_VISIT(traverse_module_state->__pyx_codeobj__636);
  Py_VISIT(traverse_module_state->__pyx_codeobj__637);
  Py_VISIT(traverse_module_state->__pyx_codeobj__638);
  Py_VISIT(traverse_module_state->__pyx_codeobj__639);
  Py_VISIT(traverse_module_state->__pyx_codeobj__640);
  Py_VISIT(traverse_module_state->__pyx_codeobj__641);
  Py_VISIT(traverse_module_state->__pyx_codeobj__642);
  Py_VISIT(traverse_module_state->__pyx_codeobj__643);
  Py_VISIT(traverse_module_state->__pyx_codeobj__644);
  Py_VISIT(traverse_module_state->__pyx_codeobj__645);
  Py_VISIT(traverse_module_state->__pyx_codeobj__646);
  Py_VISIT(traverse_module_state->__pyx_codeobj__647);
  Py_VISIT(traverse_module_state->__pyx_codeobj__648);
  Py_VISIT(traverse_module_state->__pyx_codeobj__649);
  Py_VISIT(traverse_module_state->__pyx_codeobj__650);
  Py_VISIT(traverse_module_state->__pyx_codeobj__651);
  Py_VISIT(traverse_module_state->__pyx_codeobj__652);
  Py_VISIT(traverse_module_state->__pyx_codeobj__653);
  Py_VISIT(traverse_module_state->__pyx_codeobj__654);
  Py_VISIT(traverse_module_state->__pyx_codeobj__655);
  Py_VISIT(traverse_module_state->__pyx_codeobj__656);
  Py_VISIT(traverse_module_state->__pyx_codeobj__657);
  Py_VISIT(traverse_module_state->__pyx_codeobj__659);
  Py_VISIT(traverse_module_state->__pyx_codeobj__660);
  Py_VISIT(traverse_module_state->__pyx_codeobj__661);
  Py_VISIT(traverse_module_state->__pyx_codeobj__663);
  Py_VISIT(traverse_module_state->__pyx_codeobj__665);
  Py_VISIT(traverse_module_state->__pyx_codeobj__666);
  Py_VISIT(traverse_module_state->__pyx_codeobj__667);
  Py_VISIT(traverse_module_state->__pyx_codeobj__668);
  Py_VISIT(traverse_module_state->__pyx_codeobj__669);
  Py_VISIT(traverse_module_state->__pyx_codeobj__670);
  Py_VISIT(traverse_module_state->__pyx_codeobj__671);
  Py_VISIT(traverse_module_state->__pyx_codeobj__672);
  Py_VISIT(traverse_module_state->__pyx_codeobj__674);
  Py_VISIT(traverse_module_state->__pyx_codeobj__676);
  Py_VISIT(traverse_module_state->__pyx_codeobj__679);
  Py_VISIT(traverse_module_state->__pyx_codeobj__681);
  Py_VISIT(traverse_module_state->__pyx_codeobj__682);
  Py_VISIT(traverse_module_state->__pyx_codeobj__683);
  Py_VISIT(traverse_module_state->__pyx_codeobj__684);
  Py_VISIT(traverse_module_state->__pyx_codeobj__685);
  Py_VISIT(traverse_module_state->__pyx_codeobj__686);
  Py_VISIT(traverse_module_state->__pyx_codeobj__688);
  Py_VISIT(traverse_module_state->__pyx_codeobj__690);
  Py_VISIT(traverse_module_state->__pyx_codeobj__691);
  Py_VISIT(traverse_module_state->__pyx_codeobj__693);
  Py_VISIT(traverse_module_state->__pyx_codeobj__694);
  Py_VISIT(traverse_module_state->__pyx_codeobj__695);
  Py_VISIT(traverse_module_state->__pyx_codeobj__696);
  Py_VISIT(traverse_module_state->__pyx_codeobj__698);
  Py_VISIT(traverse_module_state->__pyx_codeobj__700);
  Py_VISIT(traverse_module_state->__pyx_codeobj__701);
  Py_VISIT(traverse_module_state->__pyx_codeobj__702);
  Py_VISIT(traverse_module_state->__pyx_codeobj__703);
  Py_VISIT(traverse_module_state->__pyx_codeobj__705);
  Py_VISIT(traverse_module_state->__pyx_codeobj__706);
  Py_VISIT(traverse_module_state->__pyx_codeobj__707);
  Py_VISIT(traverse_module_state->__pyx_codeobj__708);
  Py_VISIT(traverse_module_state->__pyx_codeobj__709);
  Py_VISIT(traverse_module_state->__pyx_codeobj__710);
  Py_VISIT(traverse_module_state->__pyx_codeobj__711);
  Py_VISIT(traverse_module_state->__pyx_codeobj__712);
  Py_VISIT(traverse_module_state->__pyx_codeobj__713);
  Py_VISIT(traverse_module_state->__pyx_codeobj__714);
  Py_VISIT(traverse_module_state->__pyx_codeobj__715);
  Py_VISIT(traverse_module_state->__pyx_codeobj__716);
  Py_VISIT(traverse_module_state->__pyx_codeobj__717);
  Py_VISIT(traverse_module_state->__pyx_codeobj__719);
  Py_VISIT(traverse_module_state->__pyx_codeobj__720);
  Py_VISIT(traverse_module_state->__pyx_codeobj__721);
  Py_VISIT(traverse_module_state->__pyx_codeobj__722);
  Py_VISIT(traverse_module_state->__pyx_codeobj__723);
  Py_VISIT(traverse_module_state->__pyx_codeobj__724);
  Py_VISIT(traverse_module_state->__pyx_codeobj__725);
  Py_VISIT(traverse_module_state->__pyx_codeobj__726);
  Py_VISIT(traverse_module_state->__pyx_codeobj__727);
  Py_VISIT(traverse_module_state->__pyx_codeobj__728);
  Py_VISIT(traverse_module_state->__pyx_codeobj__729);
  Py_VISIT(traverse_module_state->__pyx_codeobj__730);
  Py_VISIT(traverse_module_state->__pyx_codeobj__731);
  Py_VISIT(traverse_module_state->__pyx_codeobj__732);
  Py_VISIT(traverse_module_state->__pyx_codeobj__733);
  Py_VISIT(traverse_module_state->__pyx_codeobj__734);
  Py_VISIT(traverse_module_state->__pyx_codeobj__735);
  Py_VISIT(traverse_module_state->__pyx_codeobj__736);
  Py_VISIT(traverse_module_state->__pyx_codeobj__737);
  Py_VISIT(traverse_module_state->__pyx_codeobj__738);
  Py_VISIT(traverse_module_state->__pyx_codeobj__739);
  Py_VISIT(traverse_module_state->__pyx_codeobj__740);
  Py_VISIT(traverse_module_state->__pyx_codeobj__741);
  Py_VISIT(traverse_module_state->__pyx_codeobj__742);
  Py_VISIT(traverse_module_state->__pyx_codeobj__743);
  Py_VISIT(traverse_module_state->__pyx_codeobj__744);
  Py_VISIT(traverse_module_state->__pyx_codeobj__745);
  Py_VISIT(traverse_module_state->__pyx_codeobj__746);
  Py_VISIT(traverse_module_state->__pyx_codeobj__747);
  Py_VISIT(traverse_module_state->__pyx_codeobj__748);
  Py_VISIT(traverse_module_state->__pyx_codeobj__749);
  Py_VISIT(traverse_module_state->__pyx_codeobj__750);
  Py_VISIT(traverse_module_state->__pyx_codeobj__751);
  Py_VISIT(traverse_module_state->__pyx_codeobj__752);
  Py_VISIT(traverse_module_state->__pyx_codeobj__753);
  Py_VISIT(traverse_module_state->__pyx_codeobj__754);
  Py_VISIT(traverse_module_state->__pyx_codeobj__755);
  Py_VISIT(traverse_module_state->__pyx_codeobj__756);
  Py_VISIT(traverse_module_state->__pyx_codeobj__757);
  Py_VISIT(traverse_module_state->__pyx_codeobj__758);
  Py_VISIT(traverse_module_state->__pyx_codeobj__759);
  Py_VISIT(traverse_module_state->__pyx_codeobj__760);
  Py_VISIT(traverse_module_state->__pyx_codeobj__762);
  Py_VISIT(traverse_module_state->__pyx_codeobj__764);
  Py_VISIT(traverse_module_state->__pyx_codeobj__766);
  Py_VISIT(traverse_module_state->__pyx_codeobj__768);
  Py_VISIT(traverse_module_state->__pyx_codeobj__770);
  Py_VISIT(traverse_module_state->__pyx_codeobj__771);
  Py_VISIT(traverse_module_state->__pyx_codeobj__772);
  Py_VISIT(traverse_module_state->__pyx_codeobj__773);
  Py_VISIT(traverse_module_state->__pyx_codeobj__775);
  Py_VISIT(traverse_module_state->__pyx_codeobj__776);
  Py_VISIT(traverse_module_state->__pyx_codeobj__777);
  Py_VISIT(traverse_module_state->__pyx_codeobj__778);
  Py_VISIT(traverse_module_state->__pyx_codeobj__779);
  Py_VISIT(traverse_module_state->__pyx_codeobj__780);
  Py_VISIT(traverse_module_state->__pyx_codeobj__782);
  Py_VISIT(traverse_module_state->__pyx_codeobj__784);
  Py_VISIT(traverse_module_state->__pyx_codeobj__787);
  Py_VISIT(traverse_module_state->__pyx_codeobj__789);
  Py_VISIT(traverse_module_state->__pyx_codeobj__791);
  Py_VISIT(traverse_module_state->__pyx_codeobj__793);
  Py_VISIT(traverse_module_state->__pyx_codeobj__795);
  Py_VISIT(traverse_module_state->__pyx_codeobj__797);
  Py_VISIT(traverse_module_state->__pyx_codeobj__798);
  Py_VISIT(traverse_module_state->__pyx_codeobj__799);
  Py_VISIT(traverse_module_state->__pyx_codeobj__801);
  Py_VISIT(traverse_module_state->__pyx_codeobj__802);
  Py_VISIT(traverse_module_state->__pyx_codeobj__803);
  Py_VISIT(traverse_module_state->__pyx_codeobj__804);
  Py_VISIT(traverse_module_state->__pyx_codeobj__806);
  Py_VISIT(traverse_module_state->__pyx_codeobj__807);
  Py_VISIT(traverse_module_state->__pyx_codeobj__809);
  Py_VISIT(traverse_module_state->__pyx_codeobj__810);
  Py_VISIT(traverse_module_state->__pyx_codeobj__811);
  Py_VISIT(traverse_module_state->__pyx_codeobj__812);
  Py_VISIT(traverse_module_state->__pyx_codeobj__813);
  Py_VISIT(traverse_module_state->__pyx_codeobj__814);
  Py_VISIT(traverse_module_state->__pyx_codeobj__815);
  Py_VISIT(traverse_module_state->__pyx_codeobj__816);
  Py_VISIT(traverse_module_state->__pyx_codeobj__817);
  Py_VISIT(traverse_module_state->__pyx_codeobj__818);
  Py_VISIT(traverse_module_state->__pyx_codeobj__819);
  Py_VISIT(traverse_module_state->__pyx_codeobj__820);
  Py_VISIT(traverse_module_state->__pyx_codeobj__821);
  Py_VISIT(traverse_module_state->__pyx_codeobj__822);
  Py_VISIT(traverse_module_state->__pyx_codeobj__823);
  Py_VISIT(traverse_module_state->__pyx_codeobj__824);
  Py_VISIT(traverse_module_state->__pyx_codeobj__825);
  Py_VISIT(traverse_module_state->__pyx_codeobj__827);
  Py_VISIT(traverse_module_state->__pyx_codeobj__829);
  Py_VISIT(traverse_module_state->__pyx_codeobj__830);
  Py_VISIT(traverse_module_state->__pyx_codeobj__831);
  Py_VISIT(traverse_module_state->__pyx_codeobj__832);
  Py_VISIT(traverse_module_state->__pyx_codeobj__833);
  Py_VISIT(traverse_module_state->__pyx_codeobj__834);
  Py_VISIT(traverse_module_state->__pyx_codeobj__835);
  Py_VISIT(traverse_module_state->__pyx_codeobj__836);
  Py_VISIT(traverse_module_state->__pyx_codeobj__838);
  Py_VISIT(traverse_module_state->__pyx_codeobj__839);
  Py_VISIT(traverse_module_state->__pyx_codeobj__840);
  Py_VISIT(traverse_module_state->__pyx_codeobj__841);
  Py_VISIT(traverse_module_state->__pyx_codeobj__842);
  Py_VISIT(traverse_module_state->__pyx_codeobj__843);
  Py_VISIT(traverse_module_state->__pyx_codeobj__844);
  Py_VISIT(traverse_module_state->__pyx_codeobj__845);
  Py_VISIT(traverse_module_state->__pyx_codeobj__846);
  Py_VISIT(traverse_module_state->__pyx_codeobj__847);
  Py_VISIT(traverse_module_state->__pyx_codeobj__849);
  Py_VISIT(traverse_module_state->__pyx_codeobj__850);
  Py_VISIT(traverse_module_state->__pyx_codeobj__852);
  Py_VISIT(traverse_module_state->__pyx_codeobj__853);
  Py_VISIT(traverse_module_state->__pyx_codeobj__854);
  Py_VISIT(traverse_module_state->__pyx_codeobj__855);
  Py_VISIT(traverse_module_state->__pyx_codeobj__856);
  Py_VISIT(traverse_module_state->__pyx_codeobj__857);
  Py_VISIT(traverse_module_state->__pyx_codeobj__858);
  Py_VISIT(traverse_module_state->__pyx_codeobj__859);
  Py_VISIT(traverse_module_state->__pyx_codeobj__860);
  Py_VISIT(traverse_module_state->__pyx_codeobj__861);
  Py_VISIT(traverse_module_state->__pyx_codeobj__862);
  Py_VISIT(traverse_module_state->__pyx_codeobj__863);
  Py_VISIT(traverse_module_state->__pyx_codeobj__864);
  Py_VISIT(traverse_module_state->__pyx_codeobj__865);
  Py_VISIT(traverse_module_state->__pyx_codeobj__866);
  Py_VISIT(traverse_module_state->__pyx_codeobj__867);
  Py_VISIT(traverse_module_state->__pyx_codeobj__868);
  Py_VISIT(traverse_module_state->__pyx_codeobj__869);
  Py_VISIT(traverse_module_state->__pyx_codeobj__870);
  Py_VISIT(traverse_module_state->__pyx_codeobj__872);
  Py_VISIT(traverse_module_state->__pyx_codeobj__873);
  Py_VISIT(traverse_module_state->__pyx_codeobj__874);
  Py_VISIT(traverse_module_state->__pyx_codeobj__875);
  Py_VISIT(traverse_module_state->__pyx_codeobj__876);
  Py_VISIT(traverse_module_state->__pyx_codeobj__877);
  Py_VISIT(traverse_module_state->__pyx_codeobj__879);
  Py_VISIT(traverse_module_state->__pyx_codeobj__881);
  Py_VISIT(traverse_module_state->__pyx_codeobj__882);
  Py_VISIT(traverse_module_state->__pyx_codeobj__883);
  Py_VISIT(traverse_module_state->__pyx_codeobj__884);
  Py_VISIT(traverse_module_state->__pyx_codeobj__885);
  Py_VISIT(traverse_module_state->__pyx_codeobj__887);
  Py_VISIT(traverse_module_state->__pyx_codeobj__888);
  Py_VISIT(traverse_module_state->__pyx_codeobj__889);
  Py_VISIT(traverse_module_state->__pyx_codeobj__890);
  Py_VISIT(traverse_module_state->__pyx_codeobj__891);
  Py_VISIT(traverse_module_state->__pyx_codeobj__893);
  Py_VISIT(traverse_module_state->__pyx_codeobj__894);
  Py_VISIT(traverse_module_state->__pyx_codeobj__895);
  Py_VISIT(traverse_module_state->__pyx_codeobj__896);
  Py_VISIT(traverse_module_state->__pyx_codeobj__897);
  Py_VISIT(traverse_module_state->__pyx_codeobj__898);
  Py_VISIT(traverse_module_state->__pyx_codeobj__899);
  Py_VISIT(traverse_module_state->__pyx_codeobj__900);
  Py_VISIT(traverse_module_state->__pyx_codeobj__901);
  Py_VISIT(traverse_module_state->__pyx_codeobj__902);
  Py_VISIT(traverse_module_state->__pyx_codeobj__903);
  Py_VISIT(traverse_module_state->__pyx_codeobj__904);
  Py_VISIT(traverse_module_state->__pyx_codeobj__905);
  Py_VISIT(traverse_module_state->__pyx_codeobj__906);
  Py_VISIT(traverse_module_state->__pyx_codeobj__907);
  Py_VISIT(traverse_module_state->__pyx_codeobj__908);
  Py_VISIT(traverse_module_state->__pyx_codeobj__909);
  Py_VISIT(traverse_module_state->__pyx_codeobj__910);
  Py_VISIT(traverse_module_state->__pyx_codeobj__911);
  Py_VISIT(traverse_module_state->__pyx_codeobj__912);
  Py_VISIT(traverse_module_state->__pyx_codeobj__913);
  Py_VISIT(traverse_module_state->__pyx_codeobj__914);
  Py_VISIT(traverse_module_state->__pyx_codeobj__915);
  Py_VISIT(traverse_module_state->__pyx_codeobj__916);
  Py_VISIT(traverse_module_state->__pyx_codeobj__917);
  Py_VISIT(traverse_module_state->__pyx_codeobj__918);
  Py_VISIT(traverse_module_state->__pyx_codeobj__919);
  Py_VISIT(traverse_module_state->__pyx_codeobj__920);
  Py_VISIT(traverse_module_state->__pyx_codeobj__921);
  Py_VISIT(traverse_module_state->__pyx_codeobj__922);
  Py_VISIT(traverse_module_state->__pyx_codeobj__923);
  Py_VISIT(traverse_module_state->__pyx_codeobj__925);
  Py_VISIT(traverse_module_state->__pyx_codeobj__928);
  Py_VISIT(traverse_module_state->__pyx_codeobj__930);
  Py_VISIT(traverse_module_state->__pyx_codeobj__931);
  Py_VISIT(traverse_module_state->__pyx_codeobj__933);
  Py_VISIT(traverse_module_state->__pyx_codeobj__936);
  Py_VISIT(traverse_module_state->__pyx_codeobj__938);
  Py_VISIT(traverse_module_state->__pyx_codeobj__940);
  Py_VISIT(traverse_module_state->__pyx_codeobj__941);
  Py_VISIT(traverse_module_state->__pyx_codeobj__943);
  Py_VISIT(traverse_module_state->__pyx_codeobj__945);
  Py_VISIT(traverse_module_state->__pyx_codeobj__947);
  Py_VISIT(traverse_module_state->__pyx_codeobj__949);
  Py_VISIT(traverse_module_state->__pyx_codeobj__950);
  Py_VISIT(traverse_module_state->__pyx_codeobj__952);
  Py_VISIT(traverse_module_state->__pyx_codeobj__955);
  Py_VISIT(traverse_module_state->__pyx_codeobj__957);
  Py_VISIT(traverse_module_state->__pyx_codeobj__959);
  Py_VISIT(traverse_module_state->__pyx_codeobj__962);
  Py_VISIT(traverse_module_state->__pyx_codeobj__965);
  Py_VISIT(traverse_module_state->__pyx_codeobj__967);
  Py_VISIT(traverse_module_state->__pyx_codeobj__969);
  Py_VISIT(traverse_module_state->__pyx_codeobj__972);
  Py_VISIT(traverse_module_state->__pyx_codeobj__973);
  Py_VISIT(traverse_module_state->__pyx_codeobj__974);
  Py_VISIT(traverse_module_state->__pyx_codeobj__976);
  return 0;
}
#endif
/* #### Code section: module_state_defines ### */
#define __pyx_d __pyx_mstate_global->__pyx_d
#define __pyx_b __pyx_mstate_global->__pyx_b
#define __pyx_cython_runtime __pyx_mstate_global->__pyx_cython_runtime
#define __pyx_empty_tuple __pyx_mstate_global->__pyx_empty_tuple
#define __pyx_empty_bytes __pyx_mstate_global->__pyx_empty_bytes
#define __pyx_empty_unicode __pyx_mstate_global->__pyx_empty_unicode
#ifdef __Pyx_CyFunction_USED
#define __pyx_CyFunctionType __pyx_mstate_global->__pyx_CyFunctionType
#endif
#ifdef __Pyx_FusedFunction_USED
#define __pyx_FusedFunctionType __pyx_mstate_global->__pyx_FusedFunctionType
#endif
#ifdef __Pyx_Generator_USED
#define __pyx_GeneratorType __pyx_mstate_global->__pyx_GeneratorType
#endif
#ifdef __Pyx_IterableCoroutine_USED
#define __pyx_IterableCoroutineType __pyx_mstate_global->__pyx_IterableCoroutineType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineAwaitType __pyx_mstate_global->__pyx_CoroutineAwaitType
#endif
#ifdef __Pyx_Coroutine_USED
#define __pyx_CoroutineType __pyx_mstate_global->__pyx_CoroutineType
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_4yoda_4util_Base __pyx_mstate_global->__pyx_ptype_4yoda_4util_Base
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#define __pyx_ptype_7cpython_4type_type __pyx_mstate_global->__pyx_ptype_7cpython_4type_type
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#endif
#if CYTHON_USE_MODULE_STATE
#define __pyx_type_4yoda_4core_Dbn0D __pyx_mstate_global->__pyx_type_4yoda_4core_Dbn0D
#define __pyx_type_4yoda_4core_Dbn1D __pyx_mstate_global->__pyx_type_4yoda_4core_Dbn1D
#define __pyx_type_4yoda_4core_Dbn2D __pyx_mstate_global->__pyx_type_4yoda_4core_Dbn2D
#define __pyx_type_4yoda_4core_Dbn3D __pyx_mstate_global->__pyx_type_4yoda_4core_Dbn3D
#define __pyx_type_4yoda_4core_Bin __pyx_mstate_global->__pyx_type_4yoda_4core_Bin
#define __pyx_type_4yoda_4core_Bin1D_Dbn1D __pyx_mstate_global->__pyx_type_4yoda_4core_Bin1D_Dbn1D
#define __pyx_type_4yoda_4core_Bin1D_Dbn2D __pyx_mstate_global->__pyx_type_4yoda_4core_Bin1D_Dbn2D
#define __pyx_type_4yoda_4core_HistoBin1D __pyx_mstate_global->__pyx_type_4yoda_4core_HistoBin1D
#define __pyx_type_4yoda_4core_ProfileBin1D __pyx_mstate_global->__pyx_type_4yoda_4core_ProfileBin1D
#define __pyx_type_4yoda_4core_AnalysisObject __pyx_mstate_global->__pyx_type_4yoda_4core_AnalysisObject
#define __pyx_type_4yoda_4core_Counter __pyx_mstate_global->__pyx_type_4yoda_4core_Counter
#define __pyx_type_4yoda_4core_Histo1D __pyx_mstate_global->__pyx_type_4yoda_4core_Histo1D
#define __pyx_type_4yoda_4core_Profile1D __pyx_mstate_global->__pyx_type_4yoda_4core_Profile1D
#define __pyx_type_4yoda_4core_Bin2D_Dbn2D __pyx_mstate_global->__pyx_type_4yoda_4core_Bin2D_Dbn2D
#define __pyx_type_4yoda_4core_Bin2D_Dbn3D __pyx_mstate_global->__pyx_type_4yoda_4core_Bin2D_Dbn3D
#define __pyx_type_4yoda_4core_ProfileBin2D __pyx_mstate_global->__pyx_type_4yoda_4core_ProfileBin2D
#define __pyx_type_4yoda_4core_HistoBin2D __pyx_mstate_global->__pyx_type_4yoda_4core_HistoBin2D
#define __pyx_type_4yoda_4core_Histo2D __pyx_mstate_global->__pyx_type_4yoda_4core_Histo2D
#define __pyx_type_4yoda_4core_Profile2D __pyx_mstate_global->__pyx_type_4yoda_4core_Profile2D
#define __pyx_type_4yoda_4core_Point __pyx_mstate_global->__pyx_type_4yoda_4core_Point
#define __pyx_type_4yoda_4core_Point1D __pyx_mstate_global->__pyx_type_4yoda_4core_Point1D
#define __pyx_type_4yoda_4core_Point2D __pyx_mstate_global->__pyx_type_4yoda_4core_Point2D
#define __pyx_type_4yoda_4core_Point3D __pyx_mstate_global->__pyx_type_4yoda_4core_Point3D
#define __pyx_type_4yoda_4core_Scatter1D __pyx_mstate_global->__pyx_type_4yoda_4core_Scatter1D
#define __pyx_type_4yoda_4core_Scatter2D __pyx_mstate_global->__pyx_type_4yoda_4core_Scatter2D
#define __pyx_type_4yoda_4core_Scatter3D __pyx_mstate_global->__pyx_type_4yoda_4core_Scatter3D
#define __pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict
#define __pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check
#define __pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr
#define __pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr __pyx_mstate_global->__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr
#endif
#define __pyx_ptype_4yoda_4core_Dbn0D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Dbn0D
#define __pyx_ptype_4yoda_4core_Dbn1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Dbn1D
#define __pyx_ptype_4yoda_4core_Dbn2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Dbn2D
#define __pyx_ptype_4yoda_4core_Dbn3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Dbn3D
#define __pyx_ptype_4yoda_4core_Bin __pyx_mstate_global->__pyx_ptype_4yoda_4core_Bin
#define __pyx_ptype_4yoda_4core_Bin1D_Dbn1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Bin1D_Dbn1D
#define __pyx_ptype_4yoda_4core_Bin1D_Dbn2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Bin1D_Dbn2D
#define __pyx_ptype_4yoda_4core_HistoBin1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_HistoBin1D
#define __pyx_ptype_4yoda_4core_ProfileBin1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_ProfileBin1D
#define __pyx_ptype_4yoda_4core_AnalysisObject __pyx_mstate_global->__pyx_ptype_4yoda_4core_AnalysisObject
#define __pyx_ptype_4yoda_4core_Counter __pyx_mstate_global->__pyx_ptype_4yoda_4core_Counter
#define __pyx_ptype_4yoda_4core_Histo1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Histo1D
#define __pyx_ptype_4yoda_4core_Profile1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Profile1D
#define __pyx_ptype_4yoda_4core_Bin2D_Dbn2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Bin2D_Dbn2D
#define __pyx_ptype_4yoda_4core_Bin2D_Dbn3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Bin2D_Dbn3D
#define __pyx_ptype_4yoda_4core_ProfileBin2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_ProfileBin2D
#define __pyx_ptype_4yoda_4core_HistoBin2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_HistoBin2D
#define __pyx_ptype_4yoda_4core_Histo2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Histo2D
#define __pyx_ptype_4yoda_4core_Profile2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Profile2D
#define __pyx_ptype_4yoda_4core_Point __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point
#define __pyx_ptype_4yoda_4core_Point1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point1D
#define __pyx_ptype_4yoda_4core_Point2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point2D
#define __pyx_ptype_4yoda_4core_Point3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Point3D
#define __pyx_ptype_4yoda_4core_Scatter1D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Scatter1D
#define __pyx_ptype_4yoda_4core_Scatter2D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Scatter2D
#define __pyx_ptype_4yoda_4core_Scatter3D __pyx_mstate_global->__pyx_ptype_4yoda_4core_Scatter3D
#define __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr
#define __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr __pyx_mstate_global->__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr
#define __pyx_kp_s_0_2e __pyx_mstate_global->__pyx_kp_s_0_2e
#define __pyx_n_s_AO __pyx_mstate_global->__pyx_n_s_AO
#define __pyx_n_s_AnalysisObject __pyx_mstate_global->__pyx_n_s_AnalysisObject
#define __pyx_n_s_AnalysisObject___reduce_cython __pyx_mstate_global->__pyx_n_s_AnalysisObject___reduce_cython
#define __pyx_n_s_AnalysisObject___setstate_cython __pyx_mstate_global->__pyx_n_s_AnalysisObject___setstate_cython
#define __pyx_n_s_AnalysisObject_annotation __pyx_mstate_global->__pyx_n_s_AnalysisObject_annotation
#define __pyx_n_s_AnalysisObject_annotations __pyx_mstate_global->__pyx_n_s_AnalysisObject_annotations
#define __pyx_n_s_AnalysisObject_annotationsDict __pyx_mstate_global->__pyx_n_s_AnalysisObject_annotationsDict
#define __pyx_n_s_AnalysisObject_clearAnnotations __pyx_mstate_global->__pyx_n_s_AnalysisObject_clearAnnotations
#define __pyx_n_s_AnalysisObject_dim __pyx_mstate_global->__pyx_n_s_AnalysisObject_dim
#define __pyx_n_s_AnalysisObject_dump __pyx_mstate_global->__pyx_n_s_AnalysisObject_dump
#define __pyx_n_s_AnalysisObject_hasAnnotation __pyx_mstate_global->__pyx_n_s_AnalysisObject_hasAnnotation
#define __pyx_n_s_AnalysisObject_name __pyx_mstate_global->__pyx_n_s_AnalysisObject_name
#define __pyx_n_s_AnalysisObject_path __pyx_mstate_global->__pyx_n_s_AnalysisObject_path
#define __pyx_n_s_AnalysisObject_rmAnnotation __pyx_mstate_global->__pyx_n_s_AnalysisObject_rmAnnotation
#define __pyx_n_s_AnalysisObject_setAnnotation __pyx_mstate_global->__pyx_n_s_AnalysisObject_setAnnotation
#define __pyx_n_s_AnalysisObject_setPath __pyx_mstate_global->__pyx_n_s_AnalysisObject_setPath
#define __pyx_n_s_AnalysisObject_setTitle __pyx_mstate_global->__pyx_n_s_AnalysisObject_setTitle
#define __pyx_n_s_AnalysisObject_title __pyx_mstate_global->__pyx_n_s_AnalysisObject_title
#define __pyx_n_s_AnalysisObject_type __pyx_mstate_global->__pyx_n_s_AnalysisObject_type
#define __pyx_n_s_AssertionError __pyx_mstate_global->__pyx_n_s_AssertionError
#define __pyx_n_s_Bin __pyx_mstate_global->__pyx_n_s_Bin
#define __pyx_n_s_Bin1D_Dbn1D __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D
#define __pyx_n_s_Bin1D_Dbn1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D___reduce_cython
#define __pyx_n_s_Bin1D_Dbn1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D___setstate_cython
#define __pyx_n_s_Bin1D_Dbn1D_merge __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_merge
#define __pyx_n_s_Bin1D_Dbn1D_sumWX __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_sumWX
#define __pyx_n_s_Bin1D_Dbn1D_sumWX2 __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_sumWX2
#define __pyx_n_s_Bin1D_Dbn1D_xEdges __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xEdges
#define __pyx_n_s_Bin1D_Dbn1D_xFocus __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xFocus
#define __pyx_n_s_Bin1D_Dbn1D_xMax __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xMax
#define __pyx_n_s_Bin1D_Dbn1D_xMean __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xMean
#define __pyx_n_s_Bin1D_Dbn1D_xMid __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xMid
#define __pyx_n_s_Bin1D_Dbn1D_xMin __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xMin
#define __pyx_n_s_Bin1D_Dbn1D_xRMS __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xRMS
#define __pyx_n_s_Bin1D_Dbn1D_xStdDev __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xStdDev
#define __pyx_n_s_Bin1D_Dbn1D_xStdErr __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xStdErr
#define __pyx_n_s_Bin1D_Dbn1D_xVariance __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xVariance
#define __pyx_n_s_Bin1D_Dbn1D_xWidth __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn1D_xWidth
#define __pyx_n_s_Bin1D_Dbn2D __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D
#define __pyx_n_s_Bin1D_Dbn2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D___reduce_cython
#define __pyx_n_s_Bin1D_Dbn2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D___setstate_cython
#define __pyx_n_s_Bin1D_Dbn2D_merge __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_merge
#define __pyx_n_s_Bin1D_Dbn2D_sumWX __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_sumWX
#define __pyx_n_s_Bin1D_Dbn2D_sumWX2 __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_sumWX2
#define __pyx_n_s_Bin1D_Dbn2D_xEdges __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xEdges
#define __pyx_n_s_Bin1D_Dbn2D_xFocus __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xFocus
#define __pyx_n_s_Bin1D_Dbn2D_xMax __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xMax
#define __pyx_n_s_Bin1D_Dbn2D_xMean __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xMean
#define __pyx_n_s_Bin1D_Dbn2D_xMid __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xMid
#define __pyx_n_s_Bin1D_Dbn2D_xMin __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xMin
#define __pyx_n_s_Bin1D_Dbn2D_xRMS __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xRMS
#define __pyx_n_s_Bin1D_Dbn2D_xStdDev __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xStdDev
#define __pyx_n_s_Bin1D_Dbn2D_xStdErr __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xStdErr
#define __pyx_n_s_Bin1D_Dbn2D_xVariance __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xVariance
#define __pyx_n_s_Bin1D_Dbn2D_xWidth __pyx_mstate_global->__pyx_n_s_Bin1D_Dbn2D_xWidth
#define __pyx_n_s_Bin2D_Dbn2D __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D
#define __pyx_n_s_Bin2D_Dbn2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D___reduce_cython
#define __pyx_n_s_Bin2D_Dbn2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D___setstate_cython
#define __pyx_n_s_Bin2D_Dbn2D_adjacentTo __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_adjacentTo
#define __pyx_n_s_Bin2D_Dbn2D_area __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_area
#define __pyx_n_s_Bin2D_Dbn2D_sumWX __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_sumWX
#define __pyx_n_s_Bin2D_Dbn2D_sumWX2 __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_sumWX2
#define __pyx_n_s_Bin2D_Dbn2D_sumWXY __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_sumWXY
#define __pyx_n_s_Bin2D_Dbn2D_sumWY __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_sumWY
#define __pyx_n_s_Bin2D_Dbn2D_sumWY2 __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_sumWY2
#define __pyx_n_s_Bin2D_Dbn2D_xEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xEdges
#define __pyx_n_s_Bin2D_Dbn2D_xFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xFocus
#define __pyx_n_s_Bin2D_Dbn2D_xMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xMax
#define __pyx_n_s_Bin2D_Dbn2D_xMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xMean
#define __pyx_n_s_Bin2D_Dbn2D_xMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xMid
#define __pyx_n_s_Bin2D_Dbn2D_xMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xMin
#define __pyx_n_s_Bin2D_Dbn2D_xRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xRMS
#define __pyx_n_s_Bin2D_Dbn2D_xStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xStdDev
#define __pyx_n_s_Bin2D_Dbn2D_xStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xStdErr
#define __pyx_n_s_Bin2D_Dbn2D_xVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xVariance
#define __pyx_n_s_Bin2D_Dbn2D_xWidth __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xWidth
#define __pyx_n_s_Bin2D_Dbn2D_xyEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyEdges
#define __pyx_n_s_Bin2D_Dbn2D_xyFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyFocus
#define __pyx_n_s_Bin2D_Dbn2D_xyMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyMax
#define __pyx_n_s_Bin2D_Dbn2D_xyMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyMean
#define __pyx_n_s_Bin2D_Dbn2D_xyMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyMid
#define __pyx_n_s_Bin2D_Dbn2D_xyMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyMin
#define __pyx_n_s_Bin2D_Dbn2D_xyRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyRMS
#define __pyx_n_s_Bin2D_Dbn2D_xyStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyStdDev
#define __pyx_n_s_Bin2D_Dbn2D_xyStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyStdErr
#define __pyx_n_s_Bin2D_Dbn2D_xyVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyVariance
#define __pyx_n_s_Bin2D_Dbn2D_xyWidths __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_xyWidths
#define __pyx_n_s_Bin2D_Dbn2D_yEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yEdges
#define __pyx_n_s_Bin2D_Dbn2D_yFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yFocus
#define __pyx_n_s_Bin2D_Dbn2D_yMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yMax
#define __pyx_n_s_Bin2D_Dbn2D_yMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yMean
#define __pyx_n_s_Bin2D_Dbn2D_yMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yMid
#define __pyx_n_s_Bin2D_Dbn2D_yMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yMin
#define __pyx_n_s_Bin2D_Dbn2D_yRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yRMS
#define __pyx_n_s_Bin2D_Dbn2D_yStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yStdDev
#define __pyx_n_s_Bin2D_Dbn2D_yStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yStdErr
#define __pyx_n_s_Bin2D_Dbn2D_yVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yVariance
#define __pyx_n_s_Bin2D_Dbn2D_yWidth __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn2D_yWidth
#define __pyx_n_s_Bin2D_Dbn3D __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D
#define __pyx_n_s_Bin2D_Dbn3D___reduce_cython __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D___reduce_cython
#define __pyx_n_s_Bin2D_Dbn3D___setstate_cython __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D___setstate_cython
#define __pyx_n_s_Bin2D_Dbn3D_adjacentTo __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_adjacentTo
#define __pyx_n_s_Bin2D_Dbn3D_area __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_area
#define __pyx_n_s_Bin2D_Dbn3D_sumWX __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_sumWX
#define __pyx_n_s_Bin2D_Dbn3D_sumWX2 __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_sumWX2
#define __pyx_n_s_Bin2D_Dbn3D_sumWXY __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_sumWXY
#define __pyx_n_s_Bin2D_Dbn3D_sumWY __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_sumWY
#define __pyx_n_s_Bin2D_Dbn3D_sumWY2 __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_sumWY2
#define __pyx_n_s_Bin2D_Dbn3D_xEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xEdges
#define __pyx_n_s_Bin2D_Dbn3D_xFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xFocus
#define __pyx_n_s_Bin2D_Dbn3D_xMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xMax
#define __pyx_n_s_Bin2D_Dbn3D_xMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xMean
#define __pyx_n_s_Bin2D_Dbn3D_xMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xMid
#define __pyx_n_s_Bin2D_Dbn3D_xMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xMin
#define __pyx_n_s_Bin2D_Dbn3D_xRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xRMS
#define __pyx_n_s_Bin2D_Dbn3D_xStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xStdDev
#define __pyx_n_s_Bin2D_Dbn3D_xStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xStdErr
#define __pyx_n_s_Bin2D_Dbn3D_xVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xVariance
#define __pyx_n_s_Bin2D_Dbn3D_xWidth __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xWidth
#define __pyx_n_s_Bin2D_Dbn3D_xyEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyEdges
#define __pyx_n_s_Bin2D_Dbn3D_xyFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyFocus
#define __pyx_n_s_Bin2D_Dbn3D_xyMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyMax
#define __pyx_n_s_Bin2D_Dbn3D_xyMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyMean
#define __pyx_n_s_Bin2D_Dbn3D_xyMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyMid
#define __pyx_n_s_Bin2D_Dbn3D_xyMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyMin
#define __pyx_n_s_Bin2D_Dbn3D_xyRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyRMS
#define __pyx_n_s_Bin2D_Dbn3D_xyStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyStdDev
#define __pyx_n_s_Bin2D_Dbn3D_xyStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyStdErr
#define __pyx_n_s_Bin2D_Dbn3D_xyVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyVariance
#define __pyx_n_s_Bin2D_Dbn3D_xyWidths __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_xyWidths
#define __pyx_n_s_Bin2D_Dbn3D_yEdges __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yEdges
#define __pyx_n_s_Bin2D_Dbn3D_yFocus __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yFocus
#define __pyx_n_s_Bin2D_Dbn3D_yMax __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yMax
#define __pyx_n_s_Bin2D_Dbn3D_yMean __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yMean
#define __pyx_n_s_Bin2D_Dbn3D_yMid __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yMid
#define __pyx_n_s_Bin2D_Dbn3D_yMin __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yMin
#define __pyx_n_s_Bin2D_Dbn3D_yRMS __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yRMS
#define __pyx_n_s_Bin2D_Dbn3D_yStdDev __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yStdDev
#define __pyx_n_s_Bin2D_Dbn3D_yStdErr __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yStdErr
#define __pyx_n_s_Bin2D_Dbn3D_yVariance __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yVariance
#define __pyx_n_s_Bin2D_Dbn3D_yWidth __pyx_mstate_global->__pyx_n_s_Bin2D_Dbn3D_yWidth
#define __pyx_n_s_Bin___reduce_cython __pyx_mstate_global->__pyx_n_s_Bin___reduce_cython
#define __pyx_n_s_Bin___setstate_cython __pyx_mstate_global->__pyx_n_s_Bin___setstate_cython
#define __pyx_n_s_Bin_dim __pyx_mstate_global->__pyx_n_s_Bin_dim
#define __pyx_n_s_Bin_effNumEntries __pyx_mstate_global->__pyx_n_s_Bin_effNumEntries
#define __pyx_n_s_Bin_numEntries __pyx_mstate_global->__pyx_n_s_Bin_numEntries
#define __pyx_n_s_Bin_sumW __pyx_mstate_global->__pyx_n_s_Bin_sumW
#define __pyx_n_s_Bin_sumW2 __pyx_mstate_global->__pyx_n_s_Bin_sumW2
#define __pyx_n_s_CFUNCTYPE __pyx_mstate_global->__pyx_n_s_CFUNCTYPE
#define __pyx_kp_s_Callback_is_not_of_type_double_d __pyx_mstate_global->__pyx_kp_s_Callback_is_not_of_type_double_d
#define __pyx_n_s_Counter __pyx_mstate_global->__pyx_n_s_Counter
#define __pyx_n_s_Counter___reduce_cython __pyx_mstate_global->__pyx_n_s_Counter___reduce_cython
#define __pyx_n_s_Counter___setstate_cython __pyx_mstate_global->__pyx_n_s_Counter___setstate_cython
#define __pyx_n_s_Counter_clone __pyx_mstate_global->__pyx_n_s_Counter_clone
#define __pyx_n_s_Counter_divideBy __pyx_mstate_global->__pyx_n_s_Counter_divideBy
#define __pyx_n_s_Counter_effNumEntries __pyx_mstate_global->__pyx_n_s_Counter_effNumEntries
#define __pyx_n_s_Counter_err __pyx_mstate_global->__pyx_n_s_Counter_err
#define __pyx_n_s_Counter_fill __pyx_mstate_global->__pyx_n_s_Counter_fill
#define __pyx_n_s_Counter_mkScatter __pyx_mstate_global->__pyx_n_s_Counter_mkScatter
#define __pyx_n_s_Counter_numEntries __pyx_mstate_global->__pyx_n_s_Counter_numEntries
#define __pyx_n_s_Counter_relErr __pyx_mstate_global->__pyx_n_s_Counter_relErr
#define __pyx_n_s_Counter_reset __pyx_mstate_global->__pyx_n_s_Counter_reset
#define __pyx_n_s_Counter_scaleW __pyx_mstate_global->__pyx_n_s_Counter_scaleW
#define __pyx_n_s_Counter_sumW __pyx_mstate_global->__pyx_n_s_Counter_sumW
#define __pyx_n_s_Counter_sumW2 __pyx_mstate_global->__pyx_n_s_Counter_sumW2
#define __pyx_n_s_Counter_val __pyx_mstate_global->__pyx_n_s_Counter_val
#define __pyx_n_s_Dbn0D __pyx_mstate_global->__pyx_n_s_Dbn0D
#define __pyx_n_s_Dbn0D___reduce_cython __pyx_mstate_global->__pyx_n_s_Dbn0D___reduce_cython
#define __pyx_n_s_Dbn0D___setstate_cython __pyx_mstate_global->__pyx_n_s_Dbn0D___setstate_cython
#define __pyx_n_s_Dbn0D_copy __pyx_mstate_global->__pyx_n_s_Dbn0D_copy
#define __pyx_n_s_Dbn0D_effNumEntries __pyx_mstate_global->__pyx_n_s_Dbn0D_effNumEntries
#define __pyx_n_s_Dbn0D_errW __pyx_mstate_global->__pyx_n_s_Dbn0D_errW
#define __pyx_n_s_Dbn0D_fill __pyx_mstate_global->__pyx_n_s_Dbn0D_fill
#define __pyx_n_s_Dbn0D_numEntries __pyx_mstate_global->__pyx_n_s_Dbn0D_numEntries
#define __pyx_n_s_Dbn0D_relErrW __pyx_mstate_global->__pyx_n_s_Dbn0D_relErrW
#define __pyx_n_s_Dbn0D_reset __pyx_mstate_global->__pyx_n_s_Dbn0D_reset
#define __pyx_n_s_Dbn0D_scaleW __pyx_mstate_global->__pyx_n_s_Dbn0D_scaleW
#define __pyx_n_s_Dbn0D_sumW __pyx_mstate_global->__pyx_n_s_Dbn0D_sumW
#define __pyx_n_s_Dbn0D_sumW2 __pyx_mstate_global->__pyx_n_s_Dbn0D_sumW2
#define __pyx_kp_s_Dbn0D_val_g_err_g __pyx_mstate_global->__pyx_kp_s_Dbn0D_val_g_err_g
#define __pyx_n_s_Dbn1D __pyx_mstate_global->__pyx_n_s_Dbn1D
#define __pyx_n_s_Dbn1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Dbn1D___reduce_cython
#define __pyx_n_s_Dbn1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Dbn1D___setstate_cython
#define __pyx_n_s_Dbn1D_copy __pyx_mstate_global->__pyx_n_s_Dbn1D_copy
#define __pyx_n_s_Dbn1D_effNumEntries __pyx_mstate_global->__pyx_n_s_Dbn1D_effNumEntries
#define __pyx_n_s_Dbn1D_errW __pyx_mstate_global->__pyx_n_s_Dbn1D_errW
#define __pyx_n_s_Dbn1D_fill __pyx_mstate_global->__pyx_n_s_Dbn1D_fill
#define __pyx_kp_s_Dbn1D_mean_s_stddev_s __pyx_mstate_global->__pyx_kp_s_Dbn1D_mean_s_stddev_s
#define __pyx_n_s_Dbn1D_numEntries __pyx_mstate_global->__pyx_n_s_Dbn1D_numEntries
#define __pyx_n_s_Dbn1D_relErrW __pyx_mstate_global->__pyx_n_s_Dbn1D_relErrW
#define __pyx_n_s_Dbn1D_reset __pyx_mstate_global->__pyx_n_s_Dbn1D_reset
#define __pyx_n_s_Dbn1D_scaleW __pyx_mstate_global->__pyx_n_s_Dbn1D_scaleW
#define __pyx_n_s_Dbn1D_scaleX __pyx_mstate_global->__pyx_n_s_Dbn1D_scaleX
#define __pyx_n_s_Dbn1D_sumW __pyx_mstate_global->__pyx_n_s_Dbn1D_sumW
#define __pyx_n_s_Dbn1D_sumW2 __pyx_mstate_global->__pyx_n_s_Dbn1D_sumW2
#define __pyx_n_s_Dbn1D_sumWX __pyx_mstate_global->__pyx_n_s_Dbn1D_sumWX
#define __pyx_n_s_Dbn1D_sumWX2 __pyx_mstate_global->__pyx_n_s_Dbn1D_sumWX2
#define __pyx_n_s_Dbn1D_xMean __pyx_mstate_global->__pyx_n_s_Dbn1D_xMean
#define __pyx_n_s_Dbn1D_xRMS __pyx_mstate_global->__pyx_n_s_Dbn1D_xRMS
#define __pyx_n_s_Dbn1D_xStdDev __pyx_mstate_global->__pyx_n_s_Dbn1D_xStdDev
#define __pyx_n_s_Dbn1D_xStdErr __pyx_mstate_global->__pyx_n_s_Dbn1D_xStdErr
#define __pyx_n_s_Dbn1D_xVariance __pyx_mstate_global->__pyx_n_s_Dbn1D_xVariance
#define __pyx_n_s_Dbn2D __pyx_mstate_global->__pyx_n_s_Dbn2D
#define __pyx_n_s_Dbn2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Dbn2D___reduce_cython
#define __pyx_n_s_Dbn2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Dbn2D___setstate_cython
#define __pyx_n_s_Dbn2D_copy __pyx_mstate_global->__pyx_n_s_Dbn2D_copy
#define __pyx_n_s_Dbn2D_effNumEntries __pyx_mstate_global->__pyx_n_s_Dbn2D_effNumEntries
#define __pyx_n_s_Dbn2D_errW __pyx_mstate_global->__pyx_n_s_Dbn2D_errW
#define __pyx_n_s_Dbn2D_fill __pyx_mstate_global->__pyx_n_s_Dbn2D_fill
#define __pyx_n_s_Dbn2D_mean __pyx_mstate_global->__pyx_n_s_Dbn2D_mean
#define __pyx_kp_s_Dbn2D_mean_s_stdDev_s __pyx_mstate_global->__pyx_kp_s_Dbn2D_mean_s_stdDev_s
#define __pyx_n_s_Dbn2D_numEntries __pyx_mstate_global->__pyx_n_s_Dbn2D_numEntries
#define __pyx_n_s_Dbn2D_relErrW __pyx_mstate_global->__pyx_n_s_Dbn2D_relErrW
#define __pyx_n_s_Dbn2D_reset __pyx_mstate_global->__pyx_n_s_Dbn2D_reset
#define __pyx_n_s_Dbn2D_rms __pyx_mstate_global->__pyx_n_s_Dbn2D_rms
#define __pyx_n_s_Dbn2D_scaleW __pyx_mstate_global->__pyx_n_s_Dbn2D_scaleW
#define __pyx_n_s_Dbn2D_scaleX __pyx_mstate_global->__pyx_n_s_Dbn2D_scaleX
#define __pyx_n_s_Dbn2D_scaleXY __pyx_mstate_global->__pyx_n_s_Dbn2D_scaleXY
#define __pyx_n_s_Dbn2D_scaleY __pyx_mstate_global->__pyx_n_s_Dbn2D_scaleY
#define __pyx_n_s_Dbn2D_stdDev __pyx_mstate_global->__pyx_n_s_Dbn2D_stdDev
#define __pyx_n_s_Dbn2D_stdErr __pyx_mstate_global->__pyx_n_s_Dbn2D_stdErr
#define __pyx_n_s_Dbn2D_sumW __pyx_mstate_global->__pyx_n_s_Dbn2D_sumW
#define __pyx_n_s_Dbn2D_sumW2 __pyx_mstate_global->__pyx_n_s_Dbn2D_sumW2
#define __pyx_n_s_Dbn2D_sumWX __pyx_mstate_global->__pyx_n_s_Dbn2D_sumWX
#define __pyx_n_s_Dbn2D_sumWX2 __pyx_mstate_global->__pyx_n_s_Dbn2D_sumWX2
#define __pyx_n_s_Dbn2D_sumWXY __pyx_mstate_global->__pyx_n_s_Dbn2D_sumWXY
#define __pyx_n_s_Dbn2D_sumWY __pyx_mstate_global->__pyx_n_s_Dbn2D_sumWY
#define __pyx_n_s_Dbn2D_sumWY2 __pyx_mstate_global->__pyx_n_s_Dbn2D_sumWY2
#define __pyx_n_s_Dbn2D_variance __pyx_mstate_global->__pyx_n_s_Dbn2D_variance
#define __pyx_n_s_Dbn3D __pyx_mstate_global->__pyx_n_s_Dbn3D
#define __pyx_n_s_Dbn3D___reduce_cython __pyx_mstate_global->__pyx_n_s_Dbn3D___reduce_cython
#define __pyx_n_s_Dbn3D___setstate_cython __pyx_mstate_global->__pyx_n_s_Dbn3D___setstate_cython
#define __pyx_n_s_Dbn3D_copy __pyx_mstate_global->__pyx_n_s_Dbn3D_copy
#define __pyx_n_s_Dbn3D_effNumEntries __pyx_mstate_global->__pyx_n_s_Dbn3D_effNumEntries
#define __pyx_n_s_Dbn3D_errW __pyx_mstate_global->__pyx_n_s_Dbn3D_errW
#define __pyx_n_s_Dbn3D_fill __pyx_mstate_global->__pyx_n_s_Dbn3D_fill
#define __pyx_n_s_Dbn3D_mean __pyx_mstate_global->__pyx_n_s_Dbn3D_mean
#define __pyx_kp_s_Dbn3D_mean_s_stddev_s __pyx_mstate_global->__pyx_kp_s_Dbn3D_mean_s_stddev_s
#define __pyx_n_s_Dbn3D_numEntries __pyx_mstate_global->__pyx_n_s_Dbn3D_numEntries
#define __pyx_n_s_Dbn3D_relErrW __pyx_mstate_global->__pyx_n_s_Dbn3D_relErrW
#define __pyx_n_s_Dbn3D_reset __pyx_mstate_global->__pyx_n_s_Dbn3D_reset
#define __pyx_n_s_Dbn3D_rms __pyx_mstate_global->__pyx_n_s_Dbn3D_rms
#define __pyx_n_s_Dbn3D_scaleW __pyx_mstate_global->__pyx_n_s_Dbn3D_scaleW
#define __pyx_n_s_Dbn3D_scaleX __pyx_mstate_global->__pyx_n_s_Dbn3D_scaleX
#define __pyx_n_s_Dbn3D_scaleXYZ __pyx_mstate_global->__pyx_n_s_Dbn3D_scaleXYZ
#define __pyx_n_s_Dbn3D_scaleY __pyx_mstate_global->__pyx_n_s_Dbn3D_scaleY
#define __pyx_n_s_Dbn3D_scaleZ __pyx_mstate_global->__pyx_n_s_Dbn3D_scaleZ
#define __pyx_n_s_Dbn3D_stdDev __pyx_mstate_global->__pyx_n_s_Dbn3D_stdDev
#define __pyx_n_s_Dbn3D_stdErr __pyx_mstate_global->__pyx_n_s_Dbn3D_stdErr
#define __pyx_n_s_Dbn3D_sumW __pyx_mstate_global->__pyx_n_s_Dbn3D_sumW
#define __pyx_n_s_Dbn3D_sumW2 __pyx_mstate_global->__pyx_n_s_Dbn3D_sumW2
#define __pyx_n_s_Dbn3D_sumWX __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWX
#define __pyx_n_s_Dbn3D_sumWX2 __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWX2
#define __pyx_n_s_Dbn3D_sumWXY __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWXY
#define __pyx_n_s_Dbn3D_sumWXZ __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWXZ
#define __pyx_n_s_Dbn3D_sumWY __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWY
#define __pyx_n_s_Dbn3D_sumWY2 __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWY2
#define __pyx_n_s_Dbn3D_sumWYZ __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWYZ
#define __pyx_n_s_Dbn3D_sumWZ __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWZ
#define __pyx_n_s_Dbn3D_sumWZ2 __pyx_mstate_global->__pyx_n_s_Dbn3D_sumWZ2
#define __pyx_n_s_Dbn3D_variance __pyx_mstate_global->__pyx_n_s_Dbn3D_variance
#define __pyx_n_s_H1D __pyx_mstate_global->__pyx_n_s_H1D
#define __pyx_n_s_H2D __pyx_mstate_global->__pyx_n_s_H2D
#define __pyx_n_s_Histo1D __pyx_mstate_global->__pyx_n_s_Histo1D
#define __pyx_n_s_Histo1D___addBins_bins __pyx_mstate_global->__pyx_n_s_Histo1D___addBins_bins
#define __pyx_n_s_Histo1D___addBins_edges __pyx_mstate_global->__pyx_n_s_Histo1D___addBins_edges
#define __pyx_n_s_Histo1D___addBins_points __pyx_mstate_global->__pyx_n_s_Histo1D___addBins_points
#define __pyx_n_s_Histo1D___addBins_tuples __pyx_mstate_global->__pyx_n_s_Histo1D___addBins_tuples
#define __pyx_n_s_Histo1D___init2 __pyx_mstate_global->__pyx_n_s_Histo1D___init2
#define __pyx_n_s_Histo1D___init3 __pyx_mstate_global->__pyx_n_s_Histo1D___init3
#define __pyx_n_s_Histo1D___init5 __pyx_mstate_global->__pyx_n_s_Histo1D___init5
#define __pyx_n_s_Histo1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Histo1D___reduce_cython
#define __pyx_n_s_Histo1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Histo1D___setstate_cython
#define __pyx_n_s_Histo1D__addBins_bins __pyx_mstate_global->__pyx_n_s_Histo1D__addBins_bins
#define __pyx_n_s_Histo1D__addBins_edges __pyx_mstate_global->__pyx_n_s_Histo1D__addBins_edges
#define __pyx_n_s_Histo1D__addBins_points __pyx_mstate_global->__pyx_n_s_Histo1D__addBins_points
#define __pyx_n_s_Histo1D__addBins_tuples __pyx_mstate_global->__pyx_n_s_Histo1D__addBins_tuples
#define __pyx_n_s_Histo1D__init2 __pyx_mstate_global->__pyx_n_s_Histo1D__init2
#define __pyx_n_s_Histo1D__init3 __pyx_mstate_global->__pyx_n_s_Histo1D__init3
#define __pyx_n_s_Histo1D__init3_locals_genexpr __pyx_mstate_global->__pyx_n_s_Histo1D__init3_locals_genexpr
#define __pyx_n_s_Histo1D__init5 __pyx_mstate_global->__pyx_n_s_Histo1D__init5
#define __pyx_n_s_Histo1D__mknp __pyx_mstate_global->__pyx_n_s_Histo1D__mknp
#define __pyx_n_s_Histo1D_addBin __pyx_mstate_global->__pyx_n_s_Histo1D_addBin
#define __pyx_n_s_Histo1D_addBins __pyx_mstate_global->__pyx_n_s_Histo1D_addBins
#define __pyx_n_s_Histo1D_areaErrs __pyx_mstate_global->__pyx_n_s_Histo1D_areaErrs
#define __pyx_n_s_Histo1D_areas __pyx_mstate_global->__pyx_n_s_Histo1D_areas
#define __pyx_n_s_Histo1D_bin __pyx_mstate_global->__pyx_n_s_Histo1D_bin
#define __pyx_n_s_Histo1D_binAt __pyx_mstate_global->__pyx_n_s_Histo1D_binAt
#define __pyx_n_s_Histo1D_binIndexAt __pyx_mstate_global->__pyx_n_s_Histo1D_binIndexAt
#define __pyx_n_s_Histo1D_bins __pyx_mstate_global->__pyx_n_s_Histo1D_bins
#define __pyx_n_s_Histo1D_clone __pyx_mstate_global->__pyx_n_s_Histo1D_clone
#define __pyx_n_s_Histo1D_divideBy __pyx_mstate_global->__pyx_n_s_Histo1D_divideBy
#define __pyx_n_s_Histo1D_effNumEntries __pyx_mstate_global->__pyx_n_s_Histo1D_effNumEntries
#define __pyx_n_s_Histo1D_fill __pyx_mstate_global->__pyx_n_s_Histo1D_fill
#define __pyx_n_s_Histo1D_fillBin __pyx_mstate_global->__pyx_n_s_Histo1D_fillBin
#define __pyx_n_s_Histo1D_heightErrs __pyx_mstate_global->__pyx_n_s_Histo1D_heightErrs
#define __pyx_n_s_Histo1D_heights __pyx_mstate_global->__pyx_n_s_Histo1D_heights
#define __pyx_n_s_Histo1D_integral __pyx_mstate_global->__pyx_n_s_Histo1D_integral
#define __pyx_n_s_Histo1D_integralRange __pyx_mstate_global->__pyx_n_s_Histo1D_integralRange
#define __pyx_n_s_Histo1D_integralTo __pyx_mstate_global->__pyx_n_s_Histo1D_integralTo
#define __pyx_n_s_Histo1D_mergeBins __pyx_mstate_global->__pyx_n_s_Histo1D_mergeBins
#define __pyx_n_s_Histo1D_mkScatter __pyx_mstate_global->__pyx_n_s_Histo1D_mkScatter
#define __pyx_n_s_Histo1D_normalize __pyx_mstate_global->__pyx_n_s_Histo1D_normalize
#define __pyx_n_s_Histo1D_numBins __pyx_mstate_global->__pyx_n_s_Histo1D_numBins
#define __pyx_n_s_Histo1D_numBinsX __pyx_mstate_global->__pyx_n_s_Histo1D_numBinsX
#define __pyx_n_s_Histo1D_numEntries __pyx_mstate_global->__pyx_n_s_Histo1D_numEntries
#define __pyx_n_s_Histo1D_overflow __pyx_mstate_global->__pyx_n_s_Histo1D_overflow
#define __pyx_n_s_Histo1D_rebin __pyx_mstate_global->__pyx_n_s_Histo1D_rebin
#define __pyx_n_s_Histo1D_rebinBy __pyx_mstate_global->__pyx_n_s_Histo1D_rebinBy
#define __pyx_n_s_Histo1D_rebinTo __pyx_mstate_global->__pyx_n_s_Histo1D_rebinTo
#define __pyx_n_s_Histo1D_relErrs __pyx_mstate_global->__pyx_n_s_Histo1D_relErrs
#define __pyx_n_s_Histo1D_reset __pyx_mstate_global->__pyx_n_s_Histo1D_reset
#define __pyx_n_s_Histo1D_scaleW __pyx_mstate_global->__pyx_n_s_Histo1D_scaleW
#define __pyx_n_s_Histo1D_sumW __pyx_mstate_global->__pyx_n_s_Histo1D_sumW
#define __pyx_n_s_Histo1D_sumW2 __pyx_mstate_global->__pyx_n_s_Histo1D_sumW2
#define __pyx_n_s_Histo1D_sumWs __pyx_mstate_global->__pyx_n_s_Histo1D_sumWs
#define __pyx_n_s_Histo1D_toIntegral __pyx_mstate_global->__pyx_n_s_Histo1D_toIntegral
#define __pyx_n_s_Histo1D_totalDbn __pyx_mstate_global->__pyx_n_s_Histo1D_totalDbn
#define __pyx_n_s_Histo1D_underflow __pyx_mstate_global->__pyx_n_s_Histo1D_underflow
#define __pyx_n_s_Histo1D_xEdges __pyx_mstate_global->__pyx_n_s_Histo1D_xEdges
#define __pyx_n_s_Histo1D_xErrs __pyx_mstate_global->__pyx_n_s_Histo1D_xErrs
#define __pyx_n_s_Histo1D_xFoci __pyx_mstate_global->__pyx_n_s_Histo1D_xFoci
#define __pyx_n_s_Histo1D_xMax __pyx_mstate_global->__pyx_n_s_Histo1D_xMax
#define __pyx_n_s_Histo1D_xMaxs __pyx_mstate_global->__pyx_n_s_Histo1D_xMaxs
#define __pyx_n_s_Histo1D_xMean __pyx_mstate_global->__pyx_n_s_Histo1D_xMean
#define __pyx_n_s_Histo1D_xMids __pyx_mstate_global->__pyx_n_s_Histo1D_xMids
#define __pyx_n_s_Histo1D_xMin __pyx_mstate_global->__pyx_n_s_Histo1D_xMin
#define __pyx_n_s_Histo1D_xMins __pyx_mstate_global->__pyx_n_s_Histo1D_xMins
#define __pyx_n_s_Histo1D_xRMS __pyx_mstate_global->__pyx_n_s_Histo1D_xRMS
#define __pyx_n_s_Histo1D_xStdDev __pyx_mstate_global->__pyx_n_s_Histo1D_xStdDev
#define __pyx_n_s_Histo1D_xStdErr __pyx_mstate_global->__pyx_n_s_Histo1D_xStdErr
#define __pyx_n_s_Histo1D_xVals __pyx_mstate_global->__pyx_n_s_Histo1D_xVals
#define __pyx_n_s_Histo1D_xVariance __pyx_mstate_global->__pyx_n_s_Histo1D_xVariance
#define __pyx_n_s_Histo1D_xWidths __pyx_mstate_global->__pyx_n_s_Histo1D_xWidths
#define __pyx_n_s_Histo1D_yErrs __pyx_mstate_global->__pyx_n_s_Histo1D_yErrs
#define __pyx_n_s_Histo1D_yMax __pyx_mstate_global->__pyx_n_s_Histo1D_yMax
#define __pyx_n_s_Histo1D_yMaxs __pyx_mstate_global->__pyx_n_s_Histo1D_yMaxs
#define __pyx_n_s_Histo1D_yMin __pyx_mstate_global->__pyx_n_s_Histo1D_yMin
#define __pyx_n_s_Histo1D_yMins __pyx_mstate_global->__pyx_n_s_Histo1D_yMins
#define __pyx_n_s_Histo1D_yVals __pyx_mstate_global->__pyx_n_s_Histo1D_yVals
#define __pyx_n_s_Histo2D __pyx_mstate_global->__pyx_n_s_Histo2D
#define __pyx_n_s_Histo2D___init2 __pyx_mstate_global->__pyx_n_s_Histo2D___init2
#define __pyx_n_s_Histo2D___init4 __pyx_mstate_global->__pyx_n_s_Histo2D___init4
#define __pyx_n_s_Histo2D___init8 __pyx_mstate_global->__pyx_n_s_Histo2D___init8
#define __pyx_n_s_Histo2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Histo2D___reduce_cython
#define __pyx_n_s_Histo2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Histo2D___setstate_cython
#define __pyx_n_s_Histo2D__init2 __pyx_mstate_global->__pyx_n_s_Histo2D__init2
#define __pyx_n_s_Histo2D__init4 __pyx_mstate_global->__pyx_n_s_Histo2D__init4
#define __pyx_n_s_Histo2D__init8 __pyx_mstate_global->__pyx_n_s_Histo2D__init8
#define __pyx_n_s_Histo2D__mknp __pyx_mstate_global->__pyx_n_s_Histo2D__mknp
#define __pyx_n_s_Histo2D_addBin __pyx_mstate_global->__pyx_n_s_Histo2D_addBin
#define __pyx_n_s_Histo2D_addBins __pyx_mstate_global->__pyx_n_s_Histo2D_addBins
#define __pyx_n_s_Histo2D_bin __pyx_mstate_global->__pyx_n_s_Histo2D_bin
#define __pyx_n_s_Histo2D_binAt __pyx_mstate_global->__pyx_n_s_Histo2D_binAt
#define __pyx_n_s_Histo2D_binIndexAt __pyx_mstate_global->__pyx_n_s_Histo2D_binIndexAt
#define __pyx_n_s_Histo2D_bins __pyx_mstate_global->__pyx_n_s_Histo2D_bins
#define __pyx_n_s_Histo2D_clone __pyx_mstate_global->__pyx_n_s_Histo2D_clone
#define __pyx_n_s_Histo2D_divideBy __pyx_mstate_global->__pyx_n_s_Histo2D_divideBy
#define __pyx_n_s_Histo2D_effNumEntries __pyx_mstate_global->__pyx_n_s_Histo2D_effNumEntries
#define __pyx_n_s_Histo2D_fill __pyx_mstate_global->__pyx_n_s_Histo2D_fill
#define __pyx_n_s_Histo2D_fillBin __pyx_mstate_global->__pyx_n_s_Histo2D_fillBin
#define __pyx_n_s_Histo2D_heightErrs __pyx_mstate_global->__pyx_n_s_Histo2D_heightErrs
#define __pyx_n_s_Histo2D_heights __pyx_mstate_global->__pyx_n_s_Histo2D_heights
#define __pyx_n_s_Histo2D_integral __pyx_mstate_global->__pyx_n_s_Histo2D_integral
#define __pyx_n_s_Histo2D_mkScatter __pyx_mstate_global->__pyx_n_s_Histo2D_mkScatter
#define __pyx_n_s_Histo2D_normalize __pyx_mstate_global->__pyx_n_s_Histo2D_normalize
#define __pyx_n_s_Histo2D_numBins __pyx_mstate_global->__pyx_n_s_Histo2D_numBins
#define __pyx_n_s_Histo2D_numBinsX __pyx_mstate_global->__pyx_n_s_Histo2D_numBinsX
#define __pyx_n_s_Histo2D_numBinsY __pyx_mstate_global->__pyx_n_s_Histo2D_numBinsY
#define __pyx_n_s_Histo2D_numEntries __pyx_mstate_global->__pyx_n_s_Histo2D_numEntries
#define __pyx_n_s_Histo2D_relErrs __pyx_mstate_global->__pyx_n_s_Histo2D_relErrs
#define __pyx_n_s_Histo2D_reset __pyx_mstate_global->__pyx_n_s_Histo2D_reset
#define __pyx_n_s_Histo2D_scaleW __pyx_mstate_global->__pyx_n_s_Histo2D_scaleW
#define __pyx_n_s_Histo2D_sumW __pyx_mstate_global->__pyx_n_s_Histo2D_sumW
#define __pyx_n_s_Histo2D_sumW2 __pyx_mstate_global->__pyx_n_s_Histo2D_sumW2
#define __pyx_n_s_Histo2D_sumWs __pyx_mstate_global->__pyx_n_s_Histo2D_sumWs
#define __pyx_n_s_Histo2D_totalDbn __pyx_mstate_global->__pyx_n_s_Histo2D_totalDbn
#define __pyx_n_s_Histo2D_volumeErrs __pyx_mstate_global->__pyx_n_s_Histo2D_volumeErrs
#define __pyx_n_s_Histo2D_volumes __pyx_mstate_global->__pyx_n_s_Histo2D_volumes
#define __pyx_n_s_Histo2D_xEdges __pyx_mstate_global->__pyx_n_s_Histo2D_xEdges
#define __pyx_n_s_Histo2D_xErrs __pyx_mstate_global->__pyx_n_s_Histo2D_xErrs
#define __pyx_n_s_Histo2D_xFoci __pyx_mstate_global->__pyx_n_s_Histo2D_xFoci
#define __pyx_n_s_Histo2D_xMax __pyx_mstate_global->__pyx_n_s_Histo2D_xMax
#define __pyx_n_s_Histo2D_xMaxs __pyx_mstate_global->__pyx_n_s_Histo2D_xMaxs
#define __pyx_n_s_Histo2D_xMean __pyx_mstate_global->__pyx_n_s_Histo2D_xMean
#define __pyx_n_s_Histo2D_xMids __pyx_mstate_global->__pyx_n_s_Histo2D_xMids
#define __pyx_n_s_Histo2D_xMin __pyx_mstate_global->__pyx_n_s_Histo2D_xMin
#define __pyx_n_s_Histo2D_xMins __pyx_mstate_global->__pyx_n_s_Histo2D_xMins
#define __pyx_n_s_Histo2D_xRMS __pyx_mstate_global->__pyx_n_s_Histo2D_xRMS
#define __pyx_n_s_Histo2D_xStdDev __pyx_mstate_global->__pyx_n_s_Histo2D_xStdDev
#define __pyx_n_s_Histo2D_xStdErr __pyx_mstate_global->__pyx_n_s_Histo2D_xStdErr
#define __pyx_n_s_Histo2D_xVals __pyx_mstate_global->__pyx_n_s_Histo2D_xVals
#define __pyx_n_s_Histo2D_xVariance __pyx_mstate_global->__pyx_n_s_Histo2D_xVariance
#define __pyx_n_s_Histo2D_xWidths __pyx_mstate_global->__pyx_n_s_Histo2D_xWidths
#define __pyx_n_s_Histo2D_xyMean __pyx_mstate_global->__pyx_n_s_Histo2D_xyMean
#define __pyx_n_s_Histo2D_xyRMS __pyx_mstate_global->__pyx_n_s_Histo2D_xyRMS
#define __pyx_n_s_Histo2D_xyStdDev __pyx_mstate_global->__pyx_n_s_Histo2D_xyStdDev
#define __pyx_n_s_Histo2D_xyStdErr __pyx_mstate_global->__pyx_n_s_Histo2D_xyStdErr
#define __pyx_n_s_Histo2D_xyVariance __pyx_mstate_global->__pyx_n_s_Histo2D_xyVariance
#define __pyx_n_s_Histo2D_yEdges __pyx_mstate_global->__pyx_n_s_Histo2D_yEdges
#define __pyx_n_s_Histo2D_yErrs __pyx_mstate_global->__pyx_n_s_Histo2D_yErrs
#define __pyx_n_s_Histo2D_yFoci __pyx_mstate_global->__pyx_n_s_Histo2D_yFoci
#define __pyx_n_s_Histo2D_yMax __pyx_mstate_global->__pyx_n_s_Histo2D_yMax
#define __pyx_n_s_Histo2D_yMaxs __pyx_mstate_global->__pyx_n_s_Histo2D_yMaxs
#define __pyx_n_s_Histo2D_yMean __pyx_mstate_global->__pyx_n_s_Histo2D_yMean
#define __pyx_n_s_Histo2D_yMids __pyx_mstate_global->__pyx_n_s_Histo2D_yMids
#define __pyx_n_s_Histo2D_yMin __pyx_mstate_global->__pyx_n_s_Histo2D_yMin
#define __pyx_n_s_Histo2D_yMins __pyx_mstate_global->__pyx_n_s_Histo2D_yMins
#define __pyx_n_s_Histo2D_yRMS __pyx_mstate_global->__pyx_n_s_Histo2D_yRMS
#define __pyx_n_s_Histo2D_yStdDev __pyx_mstate_global->__pyx_n_s_Histo2D_yStdDev
#define __pyx_n_s_Histo2D_yStdErr __pyx_mstate_global->__pyx_n_s_Histo2D_yStdErr
#define __pyx_n_s_Histo2D_yVals __pyx_mstate_global->__pyx_n_s_Histo2D_yVals
#define __pyx_n_s_Histo2D_yVariance __pyx_mstate_global->__pyx_n_s_Histo2D_yVariance
#define __pyx_n_s_Histo2D_yWidths __pyx_mstate_global->__pyx_n_s_Histo2D_yWidths
#define __pyx_n_s_Histo2D_zErrs __pyx_mstate_global->__pyx_n_s_Histo2D_zErrs
#define __pyx_n_s_Histo2D_zMax __pyx_mstate_global->__pyx_n_s_Histo2D_zMax
#define __pyx_n_s_Histo2D_zMaxs __pyx_mstate_global->__pyx_n_s_Histo2D_zMaxs
#define __pyx_n_s_Histo2D_zMin __pyx_mstate_global->__pyx_n_s_Histo2D_zMin
#define __pyx_n_s_Histo2D_zMins __pyx_mstate_global->__pyx_n_s_Histo2D_zMins
#define __pyx_n_s_Histo2D_zVals __pyx_mstate_global->__pyx_n_s_Histo2D_zVals
#define __pyx_n_s_HistoBin1D __pyx_mstate_global->__pyx_n_s_HistoBin1D
#define __pyx_n_s_HistoBin1D___reduce_cython __pyx_mstate_global->__pyx_n_s_HistoBin1D___reduce_cython
#define __pyx_n_s_HistoBin1D___setstate_cython __pyx_mstate_global->__pyx_n_s_HistoBin1D___setstate_cython
#define __pyx_n_s_HistoBin1D_area __pyx_mstate_global->__pyx_n_s_HistoBin1D_area
#define __pyx_n_s_HistoBin1D_areaErr __pyx_mstate_global->__pyx_n_s_HistoBin1D_areaErr
#define __pyx_kp_s_HistoBin1D_g_g_sumw_g __pyx_mstate_global->__pyx_kp_s_HistoBin1D_g_g_sumw_g
#define __pyx_n_s_HistoBin1D_height __pyx_mstate_global->__pyx_n_s_HistoBin1D_height
#define __pyx_n_s_HistoBin1D_heightErr __pyx_mstate_global->__pyx_n_s_HistoBin1D_heightErr
#define __pyx_n_s_HistoBin1D_relErr __pyx_mstate_global->__pyx_n_s_HistoBin1D_relErr
#define __pyx_n_s_HistoBin2D __pyx_mstate_global->__pyx_n_s_HistoBin2D
#define __pyx_n_s_HistoBin2D___reduce_cython __pyx_mstate_global->__pyx_n_s_HistoBin2D___reduce_cython
#define __pyx_n_s_HistoBin2D___setstate_cython __pyx_mstate_global->__pyx_n_s_HistoBin2D___setstate_cython
#define __pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g __pyx_mstate_global->__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g
#define __pyx_n_s_HistoBin2D_height __pyx_mstate_global->__pyx_n_s_HistoBin2D_height
#define __pyx_n_s_HistoBin2D_heightErr __pyx_mstate_global->__pyx_n_s_HistoBin2D_heightErr
#define __pyx_n_s_HistoBin2D_relErr __pyx_mstate_global->__pyx_n_s_HistoBin2D_relErr
#define __pyx_n_s_HistoBin2D_volume __pyx_mstate_global->__pyx_n_s_HistoBin2D_volume
#define __pyx_n_s_HistoBin2D_volumeErr __pyx_mstate_global->__pyx_n_s_HistoBin2D_volumeErr
#define __pyx_n_s_ImportError __pyx_mstate_global->__pyx_n_s_ImportError
#define __pyx_n_s_Index __pyx_mstate_global->__pyx_n_s_Index
#define __pyx_n_s_IndexError __pyx_mstate_global->__pyx_n_s_IndexError
#define __pyx_n_s_Index___init __pyx_mstate_global->__pyx_n_s_Index___init
#define __pyx_n_s_Index___repr __pyx_mstate_global->__pyx_n_s_Index___repr
#define __pyx_kp_s_Index_of_a_file __pyx_mstate_global->__pyx_kp_s_Index_of_a_file
#define __pyx_n_s_Index_toDict __pyx_mstate_global->__pyx_n_s_Index_toDict
#define __pyx_n_s_MemoryError __pyx_mstate_global->__pyx_n_s_MemoryError
#define __pyx_kp_s_Null_pointer_referenced_perhaps __pyx_mstate_global->__pyx_kp_s_Null_pointer_referenced_perhaps
#define __pyx_n_s_OrderedDict __pyx_mstate_global->__pyx_n_s_OrderedDict
#define __pyx_n_s_P1D __pyx_mstate_global->__pyx_n_s_P1D
#define __pyx_n_s_P2D __pyx_mstate_global->__pyx_n_s_P2D
#define __pyx_n_s_Point __pyx_mstate_global->__pyx_n_s_Point
#define __pyx_n_s_Point1D __pyx_mstate_global->__pyx_n_s_Point1D
#define __pyx_n_s_Point1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Point1D___reduce_cython
#define __pyx_n_s_Point1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Point1D___setstate_cython
#define __pyx_n_s_Point1D_copy __pyx_mstate_global->__pyx_n_s_Point1D_copy
#define __pyx_n_s_Point1D_scaleX __pyx_mstate_global->__pyx_n_s_Point1D_scaleX
#define __pyx_n_s_Point1D_setX __pyx_mstate_global->__pyx_n_s_Point1D_setX
#define __pyx_n_s_Point1D_setXErrs __pyx_mstate_global->__pyx_n_s_Point1D_setXErrs
#define __pyx_n_s_Point1D_setYErrs __pyx_mstate_global->__pyx_n_s_Point1D_setYErrs
#define __pyx_n_s_Point1D_x __pyx_mstate_global->__pyx_n_s_Point1D_x
#define __pyx_n_s_Point1D_xErrAvg __pyx_mstate_global->__pyx_n_s_Point1D_xErrAvg
#define __pyx_n_s_Point1D_xErrs __pyx_mstate_global->__pyx_n_s_Point1D_xErrs
#define __pyx_n_s_Point1D_xErrsFromSource __pyx_mstate_global->__pyx_n_s_Point1D_xErrsFromSource
#define __pyx_n_s_Point1D_xMax __pyx_mstate_global->__pyx_n_s_Point1D_xMax
#define __pyx_n_s_Point1D_xMin __pyx_mstate_global->__pyx_n_s_Point1D_xMin
#define __pyx_kp_s_Point1D_x_g __pyx_mstate_global->__pyx_kp_s_Point1D_x_g
#define __pyx_n_s_Point2D __pyx_mstate_global->__pyx_n_s_Point2D
#define __pyx_n_s_Point2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Point2D___reduce_cython
#define __pyx_n_s_Point2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Point2D___setstate_cython
#define __pyx_n_s_Point2D_copy __pyx_mstate_global->__pyx_n_s_Point2D_copy
#define __pyx_n_s_Point2D_scale __pyx_mstate_global->__pyx_n_s_Point2D_scale
#define __pyx_n_s_Point2D_scaleX __pyx_mstate_global->__pyx_n_s_Point2D_scaleX
#define __pyx_n_s_Point2D_scaleXY __pyx_mstate_global->__pyx_n_s_Point2D_scaleXY
#define __pyx_n_s_Point2D_scaleY __pyx_mstate_global->__pyx_n_s_Point2D_scaleY
#define __pyx_n_s_Point2D_setX __pyx_mstate_global->__pyx_n_s_Point2D_setX
#define __pyx_n_s_Point2D_setXErrs __pyx_mstate_global->__pyx_n_s_Point2D_setXErrs
#define __pyx_n_s_Point2D_setY __pyx_mstate_global->__pyx_n_s_Point2D_setY
#define __pyx_n_s_Point2D_setYErrs __pyx_mstate_global->__pyx_n_s_Point2D_setYErrs
#define __pyx_n_s_Point2D_x __pyx_mstate_global->__pyx_n_s_Point2D_x
#define __pyx_n_s_Point2D_xErrAvg __pyx_mstate_global->__pyx_n_s_Point2D_xErrAvg
#define __pyx_n_s_Point2D_xErrs __pyx_mstate_global->__pyx_n_s_Point2D_xErrs
#define __pyx_n_s_Point2D_xMax __pyx_mstate_global->__pyx_n_s_Point2D_xMax
#define __pyx_n_s_Point2D_xMin __pyx_mstate_global->__pyx_n_s_Point2D_xMin
#define __pyx_kp_s_Point2D_x_g_y_g __pyx_mstate_global->__pyx_kp_s_Point2D_x_g_y_g
#define __pyx_n_s_Point2D_y __pyx_mstate_global->__pyx_n_s_Point2D_y
#define __pyx_n_s_Point2D_yErrAvg __pyx_mstate_global->__pyx_n_s_Point2D_yErrAvg
#define __pyx_n_s_Point2D_yErrs __pyx_mstate_global->__pyx_n_s_Point2D_yErrs
#define __pyx_n_s_Point2D_yErrsFromSource __pyx_mstate_global->__pyx_n_s_Point2D_yErrsFromSource
#define __pyx_n_s_Point2D_yMax __pyx_mstate_global->__pyx_n_s_Point2D_yMax
#define __pyx_n_s_Point2D_yMin __pyx_mstate_global->__pyx_n_s_Point2D_yMin
#define __pyx_n_s_Point3D __pyx_mstate_global->__pyx_n_s_Point3D
#define __pyx_n_s_Point3D___reduce_cython __pyx_mstate_global->__pyx_n_s_Point3D___reduce_cython
#define __pyx_n_s_Point3D___setstate_cython __pyx_mstate_global->__pyx_n_s_Point3D___setstate_cython
#define __pyx_n_s_Point3D_copy __pyx_mstate_global->__pyx_n_s_Point3D_copy
#define __pyx_n_s_Point3D_scaleX __pyx_mstate_global->__pyx_n_s_Point3D_scaleX
#define __pyx_n_s_Point3D_scaleXYZ __pyx_mstate_global->__pyx_n_s_Point3D_scaleXYZ
#define __pyx_n_s_Point3D_scaleY __pyx_mstate_global->__pyx_n_s_Point3D_scaleY
#define __pyx_n_s_Point3D_scaleZ __pyx_mstate_global->__pyx_n_s_Point3D_scaleZ
#define __pyx_n_s_Point3D_setX __pyx_mstate_global->__pyx_n_s_Point3D_setX
#define __pyx_n_s_Point3D_setXErrs __pyx_mstate_global->__pyx_n_s_Point3D_setXErrs
#define __pyx_n_s_Point3D_setY __pyx_mstate_global->__pyx_n_s_Point3D_setY
#define __pyx_n_s_Point3D_setYErrs __pyx_mstate_global->__pyx_n_s_Point3D_setYErrs
#define __pyx_n_s_Point3D_setZ __pyx_mstate_global->__pyx_n_s_Point3D_setZ
#define __pyx_n_s_Point3D_setZErrs __pyx_mstate_global->__pyx_n_s_Point3D_setZErrs
#define __pyx_n_s_Point3D_x __pyx_mstate_global->__pyx_n_s_Point3D_x
#define __pyx_n_s_Point3D_xErrAvg __pyx_mstate_global->__pyx_n_s_Point3D_xErrAvg
#define __pyx_n_s_Point3D_xErrs __pyx_mstate_global->__pyx_n_s_Point3D_xErrs
#define __pyx_n_s_Point3D_xMax __pyx_mstate_global->__pyx_n_s_Point3D_xMax
#define __pyx_n_s_Point3D_xMin __pyx_mstate_global->__pyx_n_s_Point3D_xMin
#define __pyx_kp_s_Point3D_x_g_y_g_z_g __pyx_mstate_global->__pyx_kp_s_Point3D_x_g_y_g_z_g
#define __pyx_n_s_Point3D_y __pyx_mstate_global->__pyx_n_s_Point3D_y
#define __pyx_n_s_Point3D_yErrAvg __pyx_mstate_global->__pyx_n_s_Point3D_yErrAvg
#define __pyx_n_s_Point3D_yErrs __pyx_mstate_global->__pyx_n_s_Point3D_yErrs
#define __pyx_n_s_Point3D_yMax __pyx_mstate_global->__pyx_n_s_Point3D_yMax
#define __pyx_n_s_Point3D_yMin __pyx_mstate_global->__pyx_n_s_Point3D_yMin
#define __pyx_n_s_Point3D_z __pyx_mstate_global->__pyx_n_s_Point3D_z
#define __pyx_n_s_Point3D_zErrAvg __pyx_mstate_global->__pyx_n_s_Point3D_zErrAvg
#define __pyx_n_s_Point3D_zErrs __pyx_mstate_global->__pyx_n_s_Point3D_zErrs
#define __pyx_n_s_Point3D_zErrsFromSource __pyx_mstate_global->__pyx_n_s_Point3D_zErrsFromSource
#define __pyx_n_s_Point3D_zMax __pyx_mstate_global->__pyx_n_s_Point3D_zMax
#define __pyx_n_s_Point3D_zMin __pyx_mstate_global->__pyx_n_s_Point3D_zMin
#define __pyx_n_s_Point___reduce_cython __pyx_mstate_global->__pyx_n_s_Point___reduce_cython
#define __pyx_n_s_Point___setstate_cython __pyx_mstate_global->__pyx_n_s_Point___setstate_cython
#define __pyx_n_s_Point_dim __pyx_mstate_global->__pyx_n_s_Point_dim
#define __pyx_n_s_Point_errAvg __pyx_mstate_global->__pyx_n_s_Point_errAvg
#define __pyx_n_s_Point_errMap __pyx_mstate_global->__pyx_n_s_Point_errMap
#define __pyx_n_s_Point_errMinus __pyx_mstate_global->__pyx_n_s_Point_errMinus
#define __pyx_n_s_Point_errPlus __pyx_mstate_global->__pyx_n_s_Point_errPlus
#define __pyx_n_s_Point_errs __pyx_mstate_global->__pyx_n_s_Point_errs
#define __pyx_n_s_Point_rmVariations __pyx_mstate_global->__pyx_n_s_Point_rmVariations
#define __pyx_n_s_Point_scale __pyx_mstate_global->__pyx_n_s_Point_scale
#define __pyx_n_s_Point_set __pyx_mstate_global->__pyx_n_s_Point_set
#define __pyx_n_s_Point_setErr __pyx_mstate_global->__pyx_n_s_Point_setErr
#define __pyx_n_s_Point_setErrMinus __pyx_mstate_global->__pyx_n_s_Point_setErrMinus
#define __pyx_n_s_Point_setErrPlus __pyx_mstate_global->__pyx_n_s_Point_setErrPlus
#define __pyx_n_s_Point_setErrs __pyx_mstate_global->__pyx_n_s_Point_setErrs
#define __pyx_n_s_Point_setVal __pyx_mstate_global->__pyx_n_s_Point_setVal
#define __pyx_n_s_Point_val __pyx_mstate_global->__pyx_n_s_Point_val
#define __pyx_n_s_Profile1D __pyx_mstate_global->__pyx_n_s_Profile1D
#define __pyx_n_s_Profile1D___init2 __pyx_mstate_global->__pyx_n_s_Profile1D___init2
#define __pyx_n_s_Profile1D___init3 __pyx_mstate_global->__pyx_n_s_Profile1D___init3
#define __pyx_n_s_Profile1D___init5 __pyx_mstate_global->__pyx_n_s_Profile1D___init5
#define __pyx_n_s_Profile1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Profile1D___reduce_cython
#define __pyx_n_s_Profile1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Profile1D___setstate_cython
#define __pyx_n_s_Profile1D__init2 __pyx_mstate_global->__pyx_n_s_Profile1D__init2
#define __pyx_n_s_Profile1D__init3 __pyx_mstate_global->__pyx_n_s_Profile1D__init3
#define __pyx_n_s_Profile1D__init3_locals_genexpr __pyx_mstate_global->__pyx_n_s_Profile1D__init3_locals_genexpr
#define __pyx_n_s_Profile1D__init5 __pyx_mstate_global->__pyx_n_s_Profile1D__init5
#define __pyx_n_s_Profile1D__mknp __pyx_mstate_global->__pyx_n_s_Profile1D__mknp
#define __pyx_n_s_Profile1D_addBin __pyx_mstate_global->__pyx_n_s_Profile1D_addBin
#define __pyx_n_s_Profile1D_addBins __pyx_mstate_global->__pyx_n_s_Profile1D_addBins
#define __pyx_n_s_Profile1D_bin __pyx_mstate_global->__pyx_n_s_Profile1D_bin
#define __pyx_n_s_Profile1D_binAt __pyx_mstate_global->__pyx_n_s_Profile1D_binAt
#define __pyx_n_s_Profile1D_binIndexAt __pyx_mstate_global->__pyx_n_s_Profile1D_binIndexAt
#define __pyx_n_s_Profile1D_bins __pyx_mstate_global->__pyx_n_s_Profile1D_bins
#define __pyx_n_s_Profile1D_clone __pyx_mstate_global->__pyx_n_s_Profile1D_clone
#define __pyx_n_s_Profile1D_divideBy __pyx_mstate_global->__pyx_n_s_Profile1D_divideBy
#define __pyx_n_s_Profile1D_effNumEntries __pyx_mstate_global->__pyx_n_s_Profile1D_effNumEntries
#define __pyx_n_s_Profile1D_fill __pyx_mstate_global->__pyx_n_s_Profile1D_fill
#define __pyx_n_s_Profile1D_fillBin __pyx_mstate_global->__pyx_n_s_Profile1D_fillBin
#define __pyx_n_s_Profile1D_mergeBins __pyx_mstate_global->__pyx_n_s_Profile1D_mergeBins
#define __pyx_n_s_Profile1D_mkScatter __pyx_mstate_global->__pyx_n_s_Profile1D_mkScatter
#define __pyx_n_s_Profile1D_numBins __pyx_mstate_global->__pyx_n_s_Profile1D_numBins
#define __pyx_n_s_Profile1D_numBinsX __pyx_mstate_global->__pyx_n_s_Profile1D_numBinsX
#define __pyx_n_s_Profile1D_numEntries __pyx_mstate_global->__pyx_n_s_Profile1D_numEntries
#define __pyx_n_s_Profile1D_overflow __pyx_mstate_global->__pyx_n_s_Profile1D_overflow
#define __pyx_n_s_Profile1D_rebin __pyx_mstate_global->__pyx_n_s_Profile1D_rebin
#define __pyx_n_s_Profile1D_rebinBy __pyx_mstate_global->__pyx_n_s_Profile1D_rebinBy
#define __pyx_n_s_Profile1D_rebinTo __pyx_mstate_global->__pyx_n_s_Profile1D_rebinTo
#define __pyx_n_s_Profile1D_reset __pyx_mstate_global->__pyx_n_s_Profile1D_reset
#define __pyx_n_s_Profile1D_scaleW __pyx_mstate_global->__pyx_n_s_Profile1D_scaleW
#define __pyx_n_s_Profile1D_scaleY __pyx_mstate_global->__pyx_n_s_Profile1D_scaleY
#define __pyx_n_s_Profile1D_sumW __pyx_mstate_global->__pyx_n_s_Profile1D_sumW
#define __pyx_n_s_Profile1D_sumW2 __pyx_mstate_global->__pyx_n_s_Profile1D_sumW2
#define __pyx_n_s_Profile1D_sumWs __pyx_mstate_global->__pyx_n_s_Profile1D_sumWs
#define __pyx_n_s_Profile1D_totalDbn __pyx_mstate_global->__pyx_n_s_Profile1D_totalDbn
#define __pyx_n_s_Profile1D_underflow __pyx_mstate_global->__pyx_n_s_Profile1D_underflow
#define __pyx_n_s_Profile1D_xEdges __pyx_mstate_global->__pyx_n_s_Profile1D_xEdges
#define __pyx_n_s_Profile1D_xErrs __pyx_mstate_global->__pyx_n_s_Profile1D_xErrs
#define __pyx_n_s_Profile1D_xFoci __pyx_mstate_global->__pyx_n_s_Profile1D_xFoci
#define __pyx_n_s_Profile1D_xMax __pyx_mstate_global->__pyx_n_s_Profile1D_xMax
#define __pyx_n_s_Profile1D_xMaxs __pyx_mstate_global->__pyx_n_s_Profile1D_xMaxs
#define __pyx_n_s_Profile1D_xMean __pyx_mstate_global->__pyx_n_s_Profile1D_xMean
#define __pyx_n_s_Profile1D_xMids __pyx_mstate_global->__pyx_n_s_Profile1D_xMids
#define __pyx_n_s_Profile1D_xMin __pyx_mstate_global->__pyx_n_s_Profile1D_xMin
#define __pyx_n_s_Profile1D_xMins __pyx_mstate_global->__pyx_n_s_Profile1D_xMins
#define __pyx_n_s_Profile1D_xRMS __pyx_mstate_global->__pyx_n_s_Profile1D_xRMS
#define __pyx_n_s_Profile1D_xStdDev __pyx_mstate_global->__pyx_n_s_Profile1D_xStdDev
#define __pyx_n_s_Profile1D_xStdErr __pyx_mstate_global->__pyx_n_s_Profile1D_xStdErr
#define __pyx_n_s_Profile1D_xVals __pyx_mstate_global->__pyx_n_s_Profile1D_xVals
#define __pyx_n_s_Profile1D_xVariance __pyx_mstate_global->__pyx_n_s_Profile1D_xVariance
#define __pyx_n_s_Profile1D_xWidths __pyx_mstate_global->__pyx_n_s_Profile1D_xWidths
#define __pyx_n_s_Profile1D_yErrs __pyx_mstate_global->__pyx_n_s_Profile1D_yErrs
#define __pyx_n_s_Profile1D_yMax __pyx_mstate_global->__pyx_n_s_Profile1D_yMax
#define __pyx_n_s_Profile1D_yMaxs __pyx_mstate_global->__pyx_n_s_Profile1D_yMaxs
#define __pyx_n_s_Profile1D_yMeans __pyx_mstate_global->__pyx_n_s_Profile1D_yMeans
#define __pyx_n_s_Profile1D_yMin __pyx_mstate_global->__pyx_n_s_Profile1D_yMin
#define __pyx_n_s_Profile1D_yMins __pyx_mstate_global->__pyx_n_s_Profile1D_yMins
#define __pyx_n_s_Profile1D_yStdDevs __pyx_mstate_global->__pyx_n_s_Profile1D_yStdDevs
#define __pyx_n_s_Profile1D_yStdErrs __pyx_mstate_global->__pyx_n_s_Profile1D_yStdErrs
#define __pyx_n_s_Profile1D_yVals __pyx_mstate_global->__pyx_n_s_Profile1D_yVals
#define __pyx_n_s_Profile2D __pyx_mstate_global->__pyx_n_s_Profile2D
#define __pyx_n_s_Profile2D___init2 __pyx_mstate_global->__pyx_n_s_Profile2D___init2
#define __pyx_n_s_Profile2D___init4 __pyx_mstate_global->__pyx_n_s_Profile2D___init4
#define __pyx_n_s_Profile2D___init8 __pyx_mstate_global->__pyx_n_s_Profile2D___init8
#define __pyx_n_s_Profile2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Profile2D___reduce_cython
#define __pyx_n_s_Profile2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Profile2D___setstate_cython
#define __pyx_n_s_Profile2D__init2 __pyx_mstate_global->__pyx_n_s_Profile2D__init2
#define __pyx_n_s_Profile2D__init4 __pyx_mstate_global->__pyx_n_s_Profile2D__init4
#define __pyx_n_s_Profile2D__init8 __pyx_mstate_global->__pyx_n_s_Profile2D__init8
#define __pyx_n_s_Profile2D__mknp __pyx_mstate_global->__pyx_n_s_Profile2D__mknp
#define __pyx_n_s_Profile2D_addBin __pyx_mstate_global->__pyx_n_s_Profile2D_addBin
#define __pyx_n_s_Profile2D_addBins __pyx_mstate_global->__pyx_n_s_Profile2D_addBins
#define __pyx_n_s_Profile2D_bin __pyx_mstate_global->__pyx_n_s_Profile2D_bin
#define __pyx_n_s_Profile2D_binAt __pyx_mstate_global->__pyx_n_s_Profile2D_binAt
#define __pyx_n_s_Profile2D_binIndexAt __pyx_mstate_global->__pyx_n_s_Profile2D_binIndexAt
#define __pyx_n_s_Profile2D_bins __pyx_mstate_global->__pyx_n_s_Profile2D_bins
#define __pyx_n_s_Profile2D_clone __pyx_mstate_global->__pyx_n_s_Profile2D_clone
#define __pyx_n_s_Profile2D_divideBy __pyx_mstate_global->__pyx_n_s_Profile2D_divideBy
#define __pyx_n_s_Profile2D_effNumEntries __pyx_mstate_global->__pyx_n_s_Profile2D_effNumEntries
#define __pyx_n_s_Profile2D_fill __pyx_mstate_global->__pyx_n_s_Profile2D_fill
#define __pyx_n_s_Profile2D_fillBin __pyx_mstate_global->__pyx_n_s_Profile2D_fillBin
#define __pyx_n_s_Profile2D_mkScatter __pyx_mstate_global->__pyx_n_s_Profile2D_mkScatter
#define __pyx_n_s_Profile2D_numBins __pyx_mstate_global->__pyx_n_s_Profile2D_numBins
#define __pyx_n_s_Profile2D_numBinsX __pyx_mstate_global->__pyx_n_s_Profile2D_numBinsX
#define __pyx_n_s_Profile2D_numBinsY __pyx_mstate_global->__pyx_n_s_Profile2D_numBinsY
#define __pyx_n_s_Profile2D_numEntries __pyx_mstate_global->__pyx_n_s_Profile2D_numEntries
#define __pyx_n_s_Profile2D_reset __pyx_mstate_global->__pyx_n_s_Profile2D_reset
#define __pyx_n_s_Profile2D_scaleW __pyx_mstate_global->__pyx_n_s_Profile2D_scaleW
#define __pyx_n_s_Profile2D_scaleZ __pyx_mstate_global->__pyx_n_s_Profile2D_scaleZ
#define __pyx_n_s_Profile2D_sumW __pyx_mstate_global->__pyx_n_s_Profile2D_sumW
#define __pyx_n_s_Profile2D_sumW2 __pyx_mstate_global->__pyx_n_s_Profile2D_sumW2
#define __pyx_n_s_Profile2D_sumWs __pyx_mstate_global->__pyx_n_s_Profile2D_sumWs
#define __pyx_n_s_Profile2D_totalDbn __pyx_mstate_global->__pyx_n_s_Profile2D_totalDbn
#define __pyx_n_s_Profile2D_xEdges __pyx_mstate_global->__pyx_n_s_Profile2D_xEdges
#define __pyx_n_s_Profile2D_xErrs __pyx_mstate_global->__pyx_n_s_Profile2D_xErrs
#define __pyx_n_s_Profile2D_xFoci __pyx_mstate_global->__pyx_n_s_Profile2D_xFoci
#define __pyx_n_s_Profile2D_xMax __pyx_mstate_global->__pyx_n_s_Profile2D_xMax
#define __pyx_n_s_Profile2D_xMaxs __pyx_mstate_global->__pyx_n_s_Profile2D_xMaxs
#define __pyx_n_s_Profile2D_xMean __pyx_mstate_global->__pyx_n_s_Profile2D_xMean
#define __pyx_n_s_Profile2D_xMids __pyx_mstate_global->__pyx_n_s_Profile2D_xMids
#define __pyx_n_s_Profile2D_xMin __pyx_mstate_global->__pyx_n_s_Profile2D_xMin
#define __pyx_n_s_Profile2D_xMins __pyx_mstate_global->__pyx_n_s_Profile2D_xMins
#define __pyx_n_s_Profile2D_xRMS __pyx_mstate_global->__pyx_n_s_Profile2D_xRMS
#define __pyx_n_s_Profile2D_xStdDev __pyx_mstate_global->__pyx_n_s_Profile2D_xStdDev
#define __pyx_n_s_Profile2D_xStdErr __pyx_mstate_global->__pyx_n_s_Profile2D_xStdErr
#define __pyx_n_s_Profile2D_xVals __pyx_mstate_global->__pyx_n_s_Profile2D_xVals
#define __pyx_n_s_Profile2D_xVariance __pyx_mstate_global->__pyx_n_s_Profile2D_xVariance
#define __pyx_n_s_Profile2D_xWidths __pyx_mstate_global->__pyx_n_s_Profile2D_xWidths
#define __pyx_n_s_Profile2D_xyMean __pyx_mstate_global->__pyx_n_s_Profile2D_xyMean
#define __pyx_n_s_Profile2D_xyRMS __pyx_mstate_global->__pyx_n_s_Profile2D_xyRMS
#define __pyx_n_s_Profile2D_xyStdDev __pyx_mstate_global->__pyx_n_s_Profile2D_xyStdDev
#define __pyx_n_s_Profile2D_xyStdErr __pyx_mstate_global->__pyx_n_s_Profile2D_xyStdErr
#define __pyx_n_s_Profile2D_xyVariance __pyx_mstate_global->__pyx_n_s_Profile2D_xyVariance
#define __pyx_n_s_Profile2D_yEdges __pyx_mstate_global->__pyx_n_s_Profile2D_yEdges
#define __pyx_n_s_Profile2D_yErrs __pyx_mstate_global->__pyx_n_s_Profile2D_yErrs
#define __pyx_n_s_Profile2D_yFoci __pyx_mstate_global->__pyx_n_s_Profile2D_yFoci
#define __pyx_n_s_Profile2D_yMax __pyx_mstate_global->__pyx_n_s_Profile2D_yMax
#define __pyx_n_s_Profile2D_yMaxs __pyx_mstate_global->__pyx_n_s_Profile2D_yMaxs
#define __pyx_n_s_Profile2D_yMean __pyx_mstate_global->__pyx_n_s_Profile2D_yMean
#define __pyx_n_s_Profile2D_yMids __pyx_mstate_global->__pyx_n_s_Profile2D_yMids
#define __pyx_n_s_Profile2D_yMin __pyx_mstate_global->__pyx_n_s_Profile2D_yMin
#define __pyx_n_s_Profile2D_yMins __pyx_mstate_global->__pyx_n_s_Profile2D_yMins
#define __pyx_n_s_Profile2D_yRMS __pyx_mstate_global->__pyx_n_s_Profile2D_yRMS
#define __pyx_n_s_Profile2D_yStdDev __pyx_mstate_global->__pyx_n_s_Profile2D_yStdDev
#define __pyx_n_s_Profile2D_yStdErr __pyx_mstate_global->__pyx_n_s_Profile2D_yStdErr
#define __pyx_n_s_Profile2D_yVals __pyx_mstate_global->__pyx_n_s_Profile2D_yVals
#define __pyx_n_s_Profile2D_yVariance __pyx_mstate_global->__pyx_n_s_Profile2D_yVariance
#define __pyx_n_s_Profile2D_yWidths __pyx_mstate_global->__pyx_n_s_Profile2D_yWidths
#define __pyx_n_s_Profile2D_zErrs __pyx_mstate_global->__pyx_n_s_Profile2D_zErrs
#define __pyx_n_s_Profile2D_zMax __pyx_mstate_global->__pyx_n_s_Profile2D_zMax
#define __pyx_n_s_Profile2D_zMaxs __pyx_mstate_global->__pyx_n_s_Profile2D_zMaxs
#define __pyx_n_s_Profile2D_zMeans __pyx_mstate_global->__pyx_n_s_Profile2D_zMeans
#define __pyx_n_s_Profile2D_zMin __pyx_mstate_global->__pyx_n_s_Profile2D_zMin
#define __pyx_n_s_Profile2D_zMins __pyx_mstate_global->__pyx_n_s_Profile2D_zMins
#define __pyx_n_s_Profile2D_zStdDevs __pyx_mstate_global->__pyx_n_s_Profile2D_zStdDevs
#define __pyx_n_s_Profile2D_zStdErrs __pyx_mstate_global->__pyx_n_s_Profile2D_zStdErrs
#define __pyx_n_s_Profile2D_zVals __pyx_mstate_global->__pyx_n_s_Profile2D_zVals
#define __pyx_n_s_ProfileBin1D __pyx_mstate_global->__pyx_n_s_ProfileBin1D
#define __pyx_n_s_ProfileBin1D___reduce_cython __pyx_mstate_global->__pyx_n_s_ProfileBin1D___reduce_cython
#define __pyx_n_s_ProfileBin1D___setstate_cython __pyx_mstate_global->__pyx_n_s_ProfileBin1D___setstate_cython
#define __pyx_kp_s_ProfileBin1D_g_g_sumw_g __pyx_mstate_global->__pyx_kp_s_ProfileBin1D_g_g_sumw_g
#define __pyx_n_s_ProfileBin1D_mean __pyx_mstate_global->__pyx_n_s_ProfileBin1D_mean
#define __pyx_n_s_ProfileBin1D_rms __pyx_mstate_global->__pyx_n_s_ProfileBin1D_rms
#define __pyx_n_s_ProfileBin1D_stdDev __pyx_mstate_global->__pyx_n_s_ProfileBin1D_stdDev
#define __pyx_n_s_ProfileBin1D_stdErr __pyx_mstate_global->__pyx_n_s_ProfileBin1D_stdErr
#define __pyx_n_s_ProfileBin1D_sumWY __pyx_mstate_global->__pyx_n_s_ProfileBin1D_sumWY
#define __pyx_n_s_ProfileBin1D_sumWY2 __pyx_mstate_global->__pyx_n_s_ProfileBin1D_sumWY2
#define __pyx_n_s_ProfileBin1D_variance __pyx_mstate_global->__pyx_n_s_ProfileBin1D_variance
#define __pyx_n_s_ProfileBin2D __pyx_mstate_global->__pyx_n_s_ProfileBin2D
#define __pyx_n_s_ProfileBin2D___reduce_cython __pyx_mstate_global->__pyx_n_s_ProfileBin2D___reduce_cython
#define __pyx_n_s_ProfileBin2D___setstate_cython __pyx_mstate_global->__pyx_n_s_ProfileBin2D___setstate_cython
#define __pyx_kp_s_ProfileBin2D_g_g_g_g __pyx_mstate_global->__pyx_kp_s_ProfileBin2D_g_g_g_g
#define __pyx_n_s_ProfileBin2D_mean __pyx_mstate_global->__pyx_n_s_ProfileBin2D_mean
#define __pyx_n_s_ProfileBin2D_rms __pyx_mstate_global->__pyx_n_s_ProfileBin2D_rms
#define __pyx_n_s_ProfileBin2D_stdDev __pyx_mstate_global->__pyx_n_s_ProfileBin2D_stdDev
#define __pyx_n_s_ProfileBin2D_stdErr __pyx_mstate_global->__pyx_n_s_ProfileBin2D_stdErr
#define __pyx_n_s_ProfileBin2D_sumWZ __pyx_mstate_global->__pyx_n_s_ProfileBin2D_sumWZ
#define __pyx_n_s_ProfileBin2D_sumWZ2 __pyx_mstate_global->__pyx_n_s_ProfileBin2D_sumWZ2
#define __pyx_n_s_ProfileBin2D_variance __pyx_mstate_global->__pyx_n_s_ProfileBin2D_variance
#define __pyx_n_s_RuntimeError __pyx_mstate_global->__pyx_n_s_RuntimeError
#define __pyx_n_s_S1D __pyx_mstate_global->__pyx_n_s_S1D
#define __pyx_n_s_S2D __pyx_mstate_global->__pyx_n_s_S2D
#define __pyx_n_s_S3D __pyx_mstate_global->__pyx_n_s_S3D
#define __pyx_n_s_Scatter1D __pyx_mstate_global->__pyx_n_s_Scatter1D
#define __pyx_n_s_Scatter1D___addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter1D___addPoint_explicit
#define __pyx_n_s_Scatter1D___addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter1D___addPoint_point
#define __pyx_n_s_Scatter1D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter1D___init_2
#define __pyx_n_s_Scatter1D___init_3 __pyx_mstate_global->__pyx_n_s_Scatter1D___init_3
#define __pyx_n_s_Scatter1D___reduce_cython __pyx_mstate_global->__pyx_n_s_Scatter1D___reduce_cython
#define __pyx_n_s_Scatter1D___setstate_cython __pyx_mstate_global->__pyx_n_s_Scatter1D___setstate_cython
#define __pyx_n_s_Scatter1D__addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter1D__addPoint_explicit
#define __pyx_n_s_Scatter1D__addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter1D__addPoint_point
#define __pyx_n_s_Scatter1D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter1D__init_2
#define __pyx_n_s_Scatter1D__init_3 __pyx_mstate_global->__pyx_n_s_Scatter1D__init_3
#define __pyx_n_s_Scatter1D__mknp __pyx_mstate_global->__pyx_n_s_Scatter1D__mknp
#define __pyx_n_s_Scatter1D_addPoint __pyx_mstate_global->__pyx_n_s_Scatter1D_addPoint
#define __pyx_n_s_Scatter1D_addPoints __pyx_mstate_global->__pyx_n_s_Scatter1D_addPoints
#define __pyx_n_s_Scatter1D_clone __pyx_mstate_global->__pyx_n_s_Scatter1D_clone
#define __pyx_n_s_Scatter1D_combineWith __pyx_mstate_global->__pyx_n_s_Scatter1D_combineWith
#define __pyx_n_s_Scatter1D_hasValidErrorBreakdown __pyx_mstate_global->__pyx_n_s_Scatter1D_hasValidErrorBreakdown
#define __pyx_n_s_Scatter1D_mkScatter __pyx_mstate_global->__pyx_n_s_Scatter1D_mkScatter
#define __pyx_n_s_Scatter1D_numPoints __pyx_mstate_global->__pyx_n_s_Scatter1D_numPoints
#define __pyx_n_s_Scatter1D_parseVariations __pyx_mstate_global->__pyx_n_s_Scatter1D_parseVariations
#define __pyx_n_s_Scatter1D_point __pyx_mstate_global->__pyx_n_s_Scatter1D_point
#define __pyx_n_s_Scatter1D_points __pyx_mstate_global->__pyx_n_s_Scatter1D_points
#define __pyx_n_s_Scatter1D_reset __pyx_mstate_global->__pyx_n_s_Scatter1D_reset
#define __pyx_n_s_Scatter1D_rmPoint __pyx_mstate_global->__pyx_n_s_Scatter1D_rmPoint
#define __pyx_n_s_Scatter1D_rmPoints __pyx_mstate_global->__pyx_n_s_Scatter1D_rmPoints
#define __pyx_n_s_Scatter1D_rmVariations __pyx_mstate_global->__pyx_n_s_Scatter1D_rmVariations
#define __pyx_n_s_Scatter1D_scale __pyx_mstate_global->__pyx_n_s_Scatter1D_scale
#define __pyx_n_s_Scatter1D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter1D_scaleX
#define __pyx_n_s_Scatter1D_transformX __pyx_mstate_global->__pyx_n_s_Scatter1D_transformX
#define __pyx_n_s_Scatter1D_updateTotalUncertainty __pyx_mstate_global->__pyx_n_s_Scatter1D_updateTotalUncertainty
#define __pyx_n_s_Scatter1D_variations __pyx_mstate_global->__pyx_n_s_Scatter1D_variations
#define __pyx_n_s_Scatter1D_writeVariationsToAnnot __pyx_mstate_global->__pyx_n_s_Scatter1D_writeVariationsToAnnot
#define __pyx_n_s_Scatter1D_xMax __pyx_mstate_global->__pyx_n_s_Scatter1D_xMax
#define __pyx_n_s_Scatter1D_xMaxs __pyx_mstate_global->__pyx_n_s_Scatter1D_xMaxs
#define __pyx_n_s_Scatter1D_xMin __pyx_mstate_global->__pyx_n_s_Scatter1D_xMin
#define __pyx_n_s_Scatter1D_xMins __pyx_mstate_global->__pyx_n_s_Scatter1D_xMins
#define __pyx_n_s_Scatter1D_xVals __pyx_mstate_global->__pyx_n_s_Scatter1D_xVals
#define __pyx_n_s_Scatter2D __pyx_mstate_global->__pyx_n_s_Scatter2D
#define __pyx_n_s_Scatter2D___addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter2D___addPoint_explicit
#define __pyx_n_s_Scatter2D___addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter2D___addPoint_point
#define __pyx_n_s_Scatter2D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter2D___init_2
#define __pyx_n_s_Scatter2D___init_3 __pyx_mstate_global->__pyx_n_s_Scatter2D___init_3
#define __pyx_n_s_Scatter2D___reduce_cython __pyx_mstate_global->__pyx_n_s_Scatter2D___reduce_cython
#define __pyx_n_s_Scatter2D___setstate_cython __pyx_mstate_global->__pyx_n_s_Scatter2D___setstate_cython
#define __pyx_n_s_Scatter2D__addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter2D__addPoint_explicit
#define __pyx_n_s_Scatter2D__addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter2D__addPoint_point
#define __pyx_n_s_Scatter2D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter2D__init_2
#define __pyx_n_s_Scatter2D__init_3 __pyx_mstate_global->__pyx_n_s_Scatter2D__init_3
#define __pyx_n_s_Scatter2D__mknp __pyx_mstate_global->__pyx_n_s_Scatter2D__mknp
#define __pyx_n_s_Scatter2D_addPoint __pyx_mstate_global->__pyx_n_s_Scatter2D_addPoint
#define __pyx_n_s_Scatter2D_addPoints __pyx_mstate_global->__pyx_n_s_Scatter2D_addPoints
#define __pyx_n_s_Scatter2D_clone __pyx_mstate_global->__pyx_n_s_Scatter2D_clone
#define __pyx_n_s_Scatter2D_combineWith __pyx_mstate_global->__pyx_n_s_Scatter2D_combineWith
#define __pyx_n_s_Scatter2D_correlationMatrix __pyx_mstate_global->__pyx_n_s_Scatter2D_correlationMatrix
#define __pyx_n_s_Scatter2D_covarianceMatrix __pyx_mstate_global->__pyx_n_s_Scatter2D_covarianceMatrix
#define __pyx_n_s_Scatter2D_hasValidErrorBreakdown __pyx_mstate_global->__pyx_n_s_Scatter2D_hasValidErrorBreakdown
#define __pyx_n_s_Scatter2D_mkScatter __pyx_mstate_global->__pyx_n_s_Scatter2D_mkScatter
#define __pyx_n_s_Scatter2D_numPoints __pyx_mstate_global->__pyx_n_s_Scatter2D_numPoints
#define __pyx_n_s_Scatter2D_parseVariations __pyx_mstate_global->__pyx_n_s_Scatter2D_parseVariations
#define __pyx_n_s_Scatter2D_point __pyx_mstate_global->__pyx_n_s_Scatter2D_point
#define __pyx_n_s_Scatter2D_points __pyx_mstate_global->__pyx_n_s_Scatter2D_points
#define __pyx_n_s_Scatter2D_reset __pyx_mstate_global->__pyx_n_s_Scatter2D_reset
#define __pyx_n_s_Scatter2D_rmPoint __pyx_mstate_global->__pyx_n_s_Scatter2D_rmPoint
#define __pyx_n_s_Scatter2D_rmPoints __pyx_mstate_global->__pyx_n_s_Scatter2D_rmPoints
#define __pyx_n_s_Scatter2D_rmVariations __pyx_mstate_global->__pyx_n_s_Scatter2D_rmVariations
#define __pyx_n_s_Scatter2D_scale __pyx_mstate_global->__pyx_n_s_Scatter2D_scale
#define __pyx_n_s_Scatter2D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleX
#define __pyx_n_s_Scatter2D_scaleXY __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleXY
#define __pyx_n_s_Scatter2D_scaleY __pyx_mstate_global->__pyx_n_s_Scatter2D_scaleY
#define __pyx_n_s_Scatter2D_transformX __pyx_mstate_global->__pyx_n_s_Scatter2D_transformX
#define __pyx_n_s_Scatter2D_transformY __pyx_mstate_global->__pyx_n_s_Scatter2D_transformY
#define __pyx_n_s_Scatter2D_updateTotalUncertainty __pyx_mstate_global->__pyx_n_s_Scatter2D_updateTotalUncertainty
#define __pyx_n_s_Scatter2D_variations __pyx_mstate_global->__pyx_n_s_Scatter2D_variations
#define __pyx_n_s_Scatter2D_writeVariationsToAnnot __pyx_mstate_global->__pyx_n_s_Scatter2D_writeVariationsToAnnot
#define __pyx_n_s_Scatter2D_xErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter2D_xErrAvgs
#define __pyx_n_s_Scatter2D_xErrs __pyx_mstate_global->__pyx_n_s_Scatter2D_xErrs
#define __pyx_n_s_Scatter2D_xMax __pyx_mstate_global->__pyx_n_s_Scatter2D_xMax
#define __pyx_n_s_Scatter2D_xMaxs __pyx_mstate_global->__pyx_n_s_Scatter2D_xMaxs
#define __pyx_n_s_Scatter2D_xMin __pyx_mstate_global->__pyx_n_s_Scatter2D_xMin
#define __pyx_n_s_Scatter2D_xMins __pyx_mstate_global->__pyx_n_s_Scatter2D_xMins
#define __pyx_n_s_Scatter2D_xVals __pyx_mstate_global->__pyx_n_s_Scatter2D_xVals
#define __pyx_n_s_Scatter2D_yErrAvgs __pyx_mstate_global->__pyx_n_s_Scatter2D_yErrAvgs
#define __pyx_n_s_Scatter2D_yErrs __pyx_mstate_global->__pyx_n_s_Scatter2D_yErrs
#define __pyx_n_s_Scatter2D_yMax __pyx_mstate_global->__pyx_n_s_Scatter2D_yMax
#define __pyx_n_s_Scatter2D_yMaxs __pyx_mstate_global->__pyx_n_s_Scatter2D_yMaxs
#define __pyx_n_s_Scatter2D_yMin __pyx_mstate_global->__pyx_n_s_Scatter2D_yMin
#define __pyx_n_s_Scatter2D_yMins __pyx_mstate_global->__pyx_n_s_Scatter2D_yMins
#define __pyx_n_s_Scatter2D_yVals __pyx_mstate_global->__pyx_n_s_Scatter2D_yVals
#define __pyx_n_s_Scatter3D __pyx_mstate_global->__pyx_n_s_Scatter3D
#define __pyx_n_s_Scatter3D___addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter3D___addPoint_explicit
#define __pyx_n_s_Scatter3D___addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter3D___addPoint_point
#define __pyx_n_s_Scatter3D___init_2 __pyx_mstate_global->__pyx_n_s_Scatter3D___init_2
#define __pyx_n_s_Scatter3D___init_3 __pyx_mstate_global->__pyx_n_s_Scatter3D___init_3
#define __pyx_n_s_Scatter3D___reduce_cython __pyx_mstate_global->__pyx_n_s_Scatter3D___reduce_cython
#define __pyx_n_s_Scatter3D___setstate_cython __pyx_mstate_global->__pyx_n_s_Scatter3D___setstate_cython
#define __pyx_n_s_Scatter3D__addPoint_explicit __pyx_mstate_global->__pyx_n_s_Scatter3D__addPoint_explicit
#define __pyx_n_s_Scatter3D__addPoint_point __pyx_mstate_global->__pyx_n_s_Scatter3D__addPoint_point
#define __pyx_n_s_Scatter3D__init_2 __pyx_mstate_global->__pyx_n_s_Scatter3D__init_2
#define __pyx_n_s_Scatter3D__init_3 __pyx_mstate_global->__pyx_n_s_Scatter3D__init_3
#define __pyx_n_s_Scatter3D__mknp __pyx_mstate_global->__pyx_n_s_Scatter3D__mknp
#define __pyx_n_s_Scatter3D_addPoint __pyx_mstate_global->__pyx_n_s_Scatter3D_addPoint
#define __pyx_n_s_Scatter3D_addPoints __pyx_mstate_global->__pyx_n_s_Scatter3D_addPoints
#define __pyx_n_s_Scatter3D_clone __pyx_mstate_global->__pyx_n_s_Scatter3D_clone
#define __pyx_n_s_Scatter3D_combineWith __pyx_mstate_global->__pyx_n_s_Scatter3D_combineWith
#define __pyx_n_s_Scatter3D_covarianceMatrix __pyx_mstate_global->__pyx_n_s_Scatter3D_covarianceMatrix
#define __pyx_n_s_Scatter3D_hasValidErrorBreakdown __pyx_mstate_global->__pyx_n_s_Scatter3D_hasValidErrorBreakdown
#define __pyx_n_s_Scatter3D_mkScatter __pyx_mstate_global->__pyx_n_s_Scatter3D_mkScatter
#define __pyx_n_s_Scatter3D_numPoints __pyx_mstate_global->__pyx_n_s_Scatter3D_numPoints
#define __pyx_n_s_Scatter3D_point __pyx_mstate_global->__pyx_n_s_Scatter3D_point
#define __pyx_n_s_Scatter3D_points __pyx_mstate_global->__pyx_n_s_Scatter3D_points
#define __pyx_n_s_Scatter3D_reset __pyx_mstate_global->__pyx_n_s_Scatter3D_reset
#define __pyx_n_s_Scatter3D_rmPoint __pyx_mstate_global->__pyx_n_s_Scatter3D_rmPoint
#define __pyx_n_s_Scatter3D_rmPoints __pyx_mstate_global->__pyx_n_s_Scatter3D_rmPoints
#define __pyx_n_s_Scatter3D_rmVariations __pyx_mstate_global->__pyx_n_s_Scatter3D_rmVariations
#define __pyx_n_s_Scatter3D_scale __pyx_mstate_global->__pyx_n_s_Scatter3D_scale
#define __pyx_n_s_Scatter3D_scaleX __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleX
#define __pyx_n_s_Scatter3D_scaleXYZ __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleXYZ
#define __pyx_n_s_Scatter3D_scaleY __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleY
#define __pyx_n_s_Scatter3D_scaleZ __pyx_mstate_global->__pyx_n_s_Scatter3D_scaleZ
#define __pyx_n_s_Scatter3D_transformX __pyx_mstate_global->__pyx_n_s_Scatter3D_transformX
#define __pyx_n_s_Scatter3D_transformY __pyx_mstate_global->__pyx_n_s_Scatter3D_transformY
#define __pyx_n_s_Scatter3D_transformZ __pyx_mstate_global->__pyx_n_s_Scatter3D_transformZ
#define __pyx_n_s_Scatter3D_updateTotalUncertainty __pyx_mstate_global->__pyx_n_s_Scatter3D_updateTotalUncertainty
#define __pyx_n_s_Scatter3D_variations __pyx_mstate_global->__pyx_n_s_Scatter3D_variations
#define __pyx_n_s_Scatter3D_writeVariationsToAnnot __pyx_mstate_global->__pyx_n_s_Scatter3D_writeVariationsToAnnot
#define __pyx_n_s_Scatter3D_xErrs __pyx_mstate_global->__pyx_n_s_Scatter3D_xErrs
#define __pyx_n_s_Scatter3D_xMax __pyx_mstate_global->__pyx_n_s_Scatter3D_xMax
#define __pyx_n_s_Scatter3D_xMaxs __pyx_mstate_global->__pyx_n_s_Scatter3D_xMaxs
#define __pyx_n_s_Scatter3D_xMin __pyx_mstate_global->__pyx_n_s_Scatter3D_xMin
#define __pyx_n_s_Scatter3D_xMins __pyx_mstate_global->__pyx_n_s_Scatter3D_xMins
#define __pyx_n_s_Scatter3D_xVals __pyx_mstate_global->__pyx_n_s_Scatter3D_xVals
#define __pyx_n_s_Scatter3D_yErrs __pyx_mstate_global->__pyx_n_s_Scatter3D_yErrs
#define __pyx_n_s_Scatter3D_yMax __pyx_mstate_global->__pyx_n_s_Scatter3D_yMax
#define __pyx_n_s_Scatter3D_yMaxs __pyx_mstate_global->__pyx_n_s_Scatter3D_yMaxs
#define __pyx_n_s_Scatter3D_yMin __pyx_mstate_global->__pyx_n_s_Scatter3D_yMin
#define __pyx_n_s_Scatter3D_yMins __pyx_mstate_global->__pyx_n_s_Scatter3D_yMins
#define __pyx_n_s_Scatter3D_yVals __pyx_mstate_global->__pyx_n_s_Scatter3D_yVals
#define __pyx_n_s_Scatter3D_zErrs __pyx_mstate_global->__pyx_n_s_Scatter3D_zErrs
#define __pyx_n_s_Scatter3D_zMax __pyx_mstate_global->__pyx_n_s_Scatter3D_zMax
#define __pyx_n_s_Scatter3D_zMaxs __pyx_mstate_global->__pyx_n_s_Scatter3D_zMaxs
#define __pyx_n_s_Scatter3D_zMin __pyx_mstate_global->__pyx_n_s_Scatter3D_zMin
#define __pyx_n_s_Scatter3D_zMins __pyx_mstate_global->__pyx_n_s_Scatter3D_zMins
#define __pyx_n_s_Scatter3D_zVals __pyx_mstate_global->__pyx_n_s_Scatter3D_zVals
#define __pyx_n_s_StringIO __pyx_mstate_global->__pyx_n_s_StringIO
#define __pyx_n_s_TypeError __pyx_mstate_global->__pyx_n_s_TypeError
#define __pyx_kp_s_Unsupported_bin_of_type __pyx_mstate_global->__pyx_kp_s_Unsupported_bin_of_type
#define __pyx_n_s_ValueError __pyx_mstate_global->__pyx_n_s_ValueError
#define __pyx_n_s_XY __pyx_mstate_global->__pyx_n_s_XY
#define __pyx_n_s_XYZ __pyx_mstate_global->__pyx_n_s_XYZ
#define __pyx_kp_s__11 __pyx_mstate_global->__pyx_kp_s__11
#define __pyx_kp_b__2 __pyx_mstate_global->__pyx_kp_b__2
#define __pyx_kp_s__2 __pyx_mstate_global->__pyx_kp_s__2
#define __pyx_kp_u__3 __pyx_mstate_global->__pyx_kp_u__3
#define __pyx_n_s__4 __pyx_mstate_global->__pyx_n_s__4
#define __pyx_kp_s__8 __pyx_mstate_global->__pyx_kp_s__8
#define __pyx_n_s__977 __pyx_mstate_global->__pyx_n_s__977
#define __pyx_n_s_a __pyx_mstate_global->__pyx_n_s_a
#define __pyx_n_s_addBin __pyx_mstate_global->__pyx_n_s_addBin
#define __pyx_n_s_addBins __pyx_mstate_global->__pyx_n_s_addBins
#define __pyx_n_s_addBins_bins __pyx_mstate_global->__pyx_n_s_addBins_bins
#define __pyx_n_s_addBins_edges __pyx_mstate_global->__pyx_n_s_addBins_edges
#define __pyx_n_s_addBins_points __pyx_mstate_global->__pyx_n_s_addBins_points
#define __pyx_n_s_addBins_tuples __pyx_mstate_global->__pyx_n_s_addBins_tuples
#define __pyx_n_s_addPoint __pyx_mstate_global->__pyx_n_s_addPoint
#define __pyx_n_s_addPoint_explicit __pyx_mstate_global->__pyx_n_s_addPoint_explicit
#define __pyx_n_s_addPoint_point __pyx_mstate_global->__pyx_n_s_addPoint_point
#define __pyx_n_s_addPoints __pyx_mstate_global->__pyx_n_s_addPoints
#define __pyx_n_s_addressof __pyx_mstate_global->__pyx_n_s_addressof
#define __pyx_n_s_adjacentTo __pyx_mstate_global->__pyx_n_s_adjacentTo
#define __pyx_n_s_ana_objs __pyx_mstate_global->__pyx_n_s_ana_objs
#define __pyx_n_s_annotation __pyx_mstate_global->__pyx_n_s_annotation
#define __pyx_n_s_annotations __pyx_mstate_global->__pyx_n_s_annotations
#define __pyx_n_s_annotationsDict __pyx_mstate_global->__pyx_n_s_annotationsDict
#define __pyx_n_s_annotationsDict_locals_genexpr __pyx_mstate_global->__pyx_n_s_annotationsDict_locals_genexpr
#define __pyx_n_s_ao __pyx_mstate_global->__pyx_n_s_ao
#define __pyx_n_s_ao1 __pyx_mstate_global->__pyx_n_s_ao1
#define __pyx_n_s_ao2 __pyx_mstate_global->__pyx_n_s_ao2
#define __pyx_n_s_aobjects __pyx_mstate_global->__pyx_n_s_aobjects
#define __pyx_n_s_aolist __pyx_mstate_global->__pyx_n_s_aolist
#define __pyx_n_s_area __pyx_mstate_global->__pyx_n_s_area
#define __pyx_n_s_areaErr __pyx_mstate_global->__pyx_n_s_areaErr
#define __pyx_n_s_areaErrs __pyx_mstate_global->__pyx_n_s_areaErrs
#define __pyx_n_s_areas __pyx_mstate_global->__pyx_n_s_areas
#define __pyx_n_s_arg __pyx_mstate_global->__pyx_n_s_arg
#define __pyx_n_s_args __pyx_mstate_global->__pyx_n_s_args
#define __pyx_n_s_array __pyx_mstate_global->__pyx_n_s_array
#define __pyx_n_s_asdict __pyx_mstate_global->__pyx_n_s_asdict
#define __pyx_n_s_asgrid __pyx_mstate_global->__pyx_n_s_asgrid
#define __pyx_n_s_asum __pyx_mstate_global->__pyx_n_s_asum
#define __pyx_n_s_asymm __pyx_mstate_global->__pyx_n_s_asymm
#define __pyx_n_s_asyncio_coroutines __pyx_mstate_global->__pyx_n_s_asyncio_coroutines
#define __pyx_n_s_attrgetter __pyx_mstate_global->__pyx_n_s_attrgetter
#define __pyx_n_s_autostr __pyx_mstate_global->__pyx_n_s_autostr
#define __pyx_n_s_ax __pyx_mstate_global->__pyx_n_s_ax
#define __pyx_n_s_ay __pyx_mstate_global->__pyx_n_s_ay
#define __pyx_n_s_az __pyx_mstate_global->__pyx_n_s_az
#define __pyx_n_s_b __pyx_mstate_global->__pyx_n_s_b
#define __pyx_n_s_begin __pyx_mstate_global->__pyx_n_s_begin
#define __pyx_n_s_bin __pyx_mstate_global->__pyx_n_s_bin
#define __pyx_n_s_binAt __pyx_mstate_global->__pyx_n_s_binAt
#define __pyx_n_s_binErrs __pyx_mstate_global->__pyx_n_s_binErrs
#define __pyx_n_s_binIndexAt __pyx_mstate_global->__pyx_n_s_binIndexAt
#define __pyx_n_s_binTotal __pyx_mstate_global->__pyx_n_s_binTotal
#define __pyx_n_s_binareadiv __pyx_mstate_global->__pyx_n_s_binareadiv
#define __pyx_n_s_binedges __pyx_mstate_global->__pyx_n_s_binedges
#define __pyx_n_s_bins __pyx_mstate_global->__pyx_n_s_bins
#define __pyx_n_s_bins_or_edges __pyx_mstate_global->__pyx_n_s_bins_or_edges
#define __pyx_n_s_binwidthdiv __pyx_mstate_global->__pyx_n_s_binwidthdiv
#define __pyx_n_s_buffer __pyx_mstate_global->__pyx_n_s_buffer
#define __pyx_n_s_bytestr_from_file __pyx_mstate_global->__pyx_n_s_bytestr_from_file
#define __pyx_n_s_cStringIO __pyx_mstate_global->__pyx_n_s_cStringIO
#define __pyx_n_s_c_double __pyx_mstate_global->__pyx_n_s_c_double
#define __pyx_n_s_callback __pyx_mstate_global->__pyx_n_s_callback
#define __pyx_n_s_cbin __pyx_mstate_global->__pyx_n_s_cbin
#define __pyx_n_s_cbins __pyx_mstate_global->__pyx_n_s_cbins
#define __pyx_n_s_cedges __pyx_mstate_global->__pyx_n_s_cedges
#define __pyx_n_s_class __pyx_mstate_global->__pyx_n_s_class
#define __pyx_n_s_class_getitem __pyx_mstate_global->__pyx_n_s_class_getitem
#define __pyx_n_s_clearAnnotations __pyx_mstate_global->__pyx_n_s_clearAnnotations
#define __pyx_n_s_cline_in_traceback __pyx_mstate_global->__pyx_n_s_cline_in_traceback
#define __pyx_n_s_clone __pyx_mstate_global->__pyx_n_s_clone
#define __pyx_n_s_close __pyx_mstate_global->__pyx_n_s_close
#define __pyx_n_s_collections __pyx_mstate_global->__pyx_n_s_collections
#define __pyx_n_s_combineWith __pyx_mstate_global->__pyx_n_s_combineWith
#define __pyx_n_s_compile __pyx_mstate_global->__pyx_n_s_compile
#define __pyx_n_s_copy __pyx_mstate_global->__pyx_n_s_copy
#define __pyx_kp_s_core_pyx __pyx_mstate_global->__pyx_kp_s_core_pyx
#define __pyx_n_s_corr __pyx_mstate_global->__pyx_n_s_corr
#define __pyx_n_s_correlation __pyx_mstate_global->__pyx_n_s_correlation
#define __pyx_n_s_correlationMatrix __pyx_mstate_global->__pyx_n_s_correlationMatrix
#define __pyx_n_s_counter __pyx_mstate_global->__pyx_n_s_counter
#define __pyx_n_s_covMatrix __pyx_mstate_global->__pyx_n_s_covMatrix
#define __pyx_n_s_covariance __pyx_mstate_global->__pyx_n_s_covariance
#define __pyx_n_s_covarianceMatrix __pyx_mstate_global->__pyx_n_s_covarianceMatrix
#define __pyx_n_s_ctypes __pyx_mstate_global->__pyx_n_s_ctypes
#define __pyx_n_s_d __pyx_mstate_global->__pyx_n_s_d
#define __pyx_n_s_da __pyx_mstate_global->__pyx_n_s_da
#define __pyx_n_s_default __pyx_mstate_global->__pyx_n_s_default
#define __pyx_n_s_dict __pyx_mstate_global->__pyx_n_s_dict
#define __pyx_n_s_dict_2 __pyx_mstate_global->__pyx_n_s_dict_2
#define __pyx_n_s_dim __pyx_mstate_global->__pyx_n_s_dim
#define __pyx_kp_u_disable __pyx_mstate_global->__pyx_kp_u_disable
#define __pyx_n_s_divide __pyx_mstate_global->__pyx_n_s_divide
#define __pyx_n_s_divideBy __pyx_mstate_global->__pyx_n_s_divideBy
#define __pyx_n_s_doc __pyx_mstate_global->__pyx_n_s_doc
#define __pyx_n_s_dump __pyx_mstate_global->__pyx_n_s_dump
#define __pyx_n_s_dx __pyx_mstate_global->__pyx_n_s_dx
#define __pyx_n_s_e __pyx_mstate_global->__pyx_n_s_e
#define __pyx_n_s_edge __pyx_mstate_global->__pyx_n_s_edge
#define __pyx_n_s_edges __pyx_mstate_global->__pyx_n_s_edges
#define __pyx_n_s_edges_or_bins __pyx_mstate_global->__pyx_n_s_edges_or_bins
#define __pyx_n_s_effNumEntries __pyx_mstate_global->__pyx_n_s_effNumEntries
#define __pyx_n_s_efficiency __pyx_mstate_global->__pyx_n_s_efficiency
#define __pyx_n_s_elem __pyx_mstate_global->__pyx_n_s_elem
#define __pyx_kp_u_enable __pyx_mstate_global->__pyx_kp_u_enable
#define __pyx_n_s_encode __pyx_mstate_global->__pyx_n_s_encode
#define __pyx_n_s_end __pyx_mstate_global->__pyx_n_s_end
#define __pyx_n_s_enter __pyx_mstate_global->__pyx_n_s_enter
#define __pyx_n_s_err __pyx_mstate_global->__pyx_n_s_err
#define __pyx_n_s_errAvg __pyx_mstate_global->__pyx_n_s_errAvg
#define __pyx_n_s_errMap __pyx_mstate_global->__pyx_n_s_errMap
#define __pyx_n_s_errMap_locals_genexpr __pyx_mstate_global->__pyx_n_s_errMap_locals_genexpr
#define __pyx_n_s_errMinus __pyx_mstate_global->__pyx_n_s_errMinus
#define __pyx_n_s_errPlus __pyx_mstate_global->__pyx_n_s_errPlus
#define __pyx_n_s_errW __pyx_mstate_global->__pyx_n_s_errW
#define __pyx_n_s_err_map __pyx_mstate_global->__pyx_n_s_err_map
#define __pyx_n_s_errs __pyx_mstate_global->__pyx_n_s_errs
#define __pyx_n_s_es __pyx_mstate_global->__pyx_n_s_es
#define __pyx_n_s_exit __pyx_mstate_global->__pyx_n_s_exit
#define __pyx_n_s_f __pyx_mstate_global->__pyx_n_s_f
#define __pyx_n_s_file_or_filename __pyx_mstate_global->__pyx_n_s_file_or_filename
#define __pyx_n_s_filename __pyx_mstate_global->__pyx_n_s_filename
#define __pyx_n_s_fill __pyx_mstate_global->__pyx_n_s_fill
#define __pyx_n_s_fillBin __pyx_mstate_global->__pyx_n_s_fillBin
#define __pyx_n_s_fn __pyx_mstate_global->__pyx_n_s_fn
#define __pyx_n_s_foci __pyx_mstate_global->__pyx_n_s_foci
#define __pyx_n_s_format __pyx_mstate_global->__pyx_n_s_format
#define __pyx_n_s_fptr __pyx_mstate_global->__pyx_n_s_fptr
#define __pyx_n_s_fraction __pyx_mstate_global->__pyx_n_s_fraction
#define __pyx_kp_u_gc __pyx_mstate_global->__pyx_kp_u_gc
#define __pyx_n_s_genexpr __pyx_mstate_global->__pyx_n_s_genexpr
#define __pyx_n_s_getDataPath __pyx_mstate_global->__pyx_n_s_getDataPath
#define __pyx_n_s_getLibPath __pyx_mstate_global->__pyx_n_s_getLibPath
#define __pyx_n_s_getYodaDataPath __pyx_mstate_global->__pyx_n_s_getYodaDataPath
#define __pyx_n_s_getstate __pyx_mstate_global->__pyx_n_s_getstate
#define __pyx_n_s_h __pyx_mstate_global->__pyx_n_s_h
#define __pyx_n_s_h_binsizediv __pyx_mstate_global->__pyx_n_s_h_binsizediv
#define __pyx_n_s_hasAnnotation __pyx_mstate_global->__pyx_n_s_hasAnnotation
#define __pyx_n_s_hasValidErrorBreakdown __pyx_mstate_global->__pyx_n_s_hasValidErrorBreakdown
#define __pyx_n_s_height __pyx_mstate_global->__pyx_n_s_height
#define __pyx_n_s_heightErr __pyx_mstate_global->__pyx_n_s_heightErr
#define __pyx_n_s_heightErrs __pyx_mstate_global->__pyx_n_s_heightErrs
#define __pyx_n_s_heights __pyx_mstate_global->__pyx_n_s_heights
#define __pyx_n_s_high __pyx_mstate_global->__pyx_n_s_high
#define __pyx_n_s_i __pyx_mstate_global->__pyx_n_s_i
#define __pyx_n_s_ia __pyx_mstate_global->__pyx_n_s_ia
#define __pyx_n_s_ib __pyx_mstate_global->__pyx_n_s_ib
#define __pyx_n_s_idx __pyx_mstate_global->__pyx_n_s_idx
#define __pyx_n_s_idxs __pyx_mstate_global->__pyx_n_s_idxs
#define __pyx_n_s_ignoreOffDiagonalTerms __pyx_mstate_global->__pyx_n_s_ignoreOffDiagonalTerms
#define __pyx_n_s_import __pyx_mstate_global->__pyx_n_s_import
#define __pyx_kp_s_include_AnalysisObject_pyx __pyx_mstate_global->__pyx_kp_s_include_AnalysisObject_pyx
#define __pyx_kp_s_include_Bin_pyx __pyx_mstate_global->__pyx_kp_s_include_Bin_pyx
#define __pyx_kp_s_include_Counter_pyx __pyx_mstate_global->__pyx_kp_s_include_Counter_pyx
#define __pyx_kp_s_include_Dbn0D_pyx __pyx_mstate_global->__pyx_kp_s_include_Dbn0D_pyx
#define __pyx_kp_s_include_Dbn1D_pyx __pyx_mstate_global->__pyx_kp_s_include_Dbn1D_pyx
#define __pyx_kp_s_include_Dbn2D_pyx __pyx_mstate_global->__pyx_kp_s_include_Dbn2D_pyx
#define __pyx_kp_s_include_Dbn3D_pyx __pyx_mstate_global->__pyx_kp_s_include_Dbn3D_pyx
#define __pyx_kp_s_include_Functions_pyx __pyx_mstate_global->__pyx_kp_s_include_Functions_pyx
#define __pyx_kp_s_include_Histo1D_pyx __pyx_mstate_global->__pyx_kp_s_include_Histo1D_pyx
#define __pyx_kp_s_include_Histo2D_pyx __pyx_mstate_global->__pyx_kp_s_include_Histo2D_pyx
#define __pyx_kp_s_include_HistoBin1D_pyx __pyx_mstate_global->__pyx_kp_s_include_HistoBin1D_pyx
#define __pyx_kp_s_include_HistoBin2D_pyx __pyx_mstate_global->__pyx_kp_s_include_HistoBin2D_pyx
#define __pyx_kp_s_include_IO_pyx __pyx_mstate_global->__pyx_kp_s_include_IO_pyx
#define __pyx_kp_s_include_Point1D_pyx __pyx_mstate_global->__pyx_kp_s_include_Point1D_pyx
#define __pyx_kp_s_include_Point2D_pyx __pyx_mstate_global->__pyx_kp_s_include_Point2D_pyx
#define __pyx_kp_s_include_Point3D_pyx __pyx_mstate_global->__pyx_kp_s_include_Point3D_pyx
#define __pyx_kp_s_include_Point_pyx __pyx_mstate_global->__pyx_kp_s_include_Point_pyx
#define __pyx_kp_s_include_Profile1D_pyx __pyx_mstate_global->__pyx_kp_s_include_Profile1D_pyx
#define __pyx_kp_s_include_Profile2D_pyx __pyx_mstate_global->__pyx_kp_s_include_Profile2D_pyx
#define __pyx_kp_s_include_ProfileBin1D_pyx __pyx_mstate_global->__pyx_kp_s_include_ProfileBin1D_pyx
#define __pyx_kp_s_include_ProfileBin2D_pyx __pyx_mstate_global->__pyx_kp_s_include_ProfileBin2D_pyx
#define __pyx_kp_s_include_Scatter1D_pyx __pyx_mstate_global->__pyx_kp_s_include_Scatter1D_pyx
#define __pyx_kp_s_include_Scatter2D_pyx __pyx_mstate_global->__pyx_kp_s_include_Scatter2D_pyx
#define __pyx_kp_s_include_Scatter3D_pyx __pyx_mstate_global->__pyx_kp_s_include_Scatter3D_pyx
#define __pyx_kp_s_include_generated_Bin1D_Dbn1D_py __pyx_mstate_global->__pyx_kp_s_include_generated_Bin1D_Dbn1D_py
#define __pyx_kp_s_include_generated_Bin1D_Dbn2D_py __pyx_mstate_global->__pyx_kp_s_include_generated_Bin1D_Dbn2D_py
#define __pyx_kp_s_include_generated_Bin2D_Dbn2D_py __pyx_mstate_global->__pyx_kp_s_include_generated_Bin2D_Dbn2D_py
#define __pyx_kp_s_include_generated_Bin2D_Dbn3D_py __pyx_mstate_global->__pyx_kp_s_include_generated_Bin2D_Dbn3D_py
#define __pyx_n_s_includeoverflow __pyx_mstate_global->__pyx_n_s_includeoverflow
#define __pyx_n_s_includeoverflows __pyx_mstate_global->__pyx_n_s_includeoverflows
#define __pyx_n_s_includeunderflow __pyx_mstate_global->__pyx_n_s_includeunderflow
#define __pyx_n_s_index_between __pyx_mstate_global->__pyx_n_s_index_between
#define __pyx_n_s_index_map __pyx_mstate_global->__pyx_n_s_index_map
#define __pyx_n_s_init __pyx_mstate_global->__pyx_n_s_init
#define __pyx_n_s_init2 __pyx_mstate_global->__pyx_n_s_init2
#define __pyx_n_s_init3 __pyx_mstate_global->__pyx_n_s_init3
#define __pyx_n_s_init4 __pyx_mstate_global->__pyx_n_s_init4
#define __pyx_n_s_init5 __pyx_mstate_global->__pyx_n_s_init5
#define __pyx_n_s_init8 __pyx_mstate_global->__pyx_n_s_init8
#define __pyx_n_s_init_2 __pyx_mstate_global->__pyx_n_s_init_2
#define __pyx_n_s_init_3 __pyx_mstate_global->__pyx_n_s_init_3
#define __pyx_n_s_init_subclass __pyx_mstate_global->__pyx_n_s_init_subclass
#define __pyx_n_s_initializing __pyx_mstate_global->__pyx_n_s_initializing
#define __pyx_n_s_integral __pyx_mstate_global->__pyx_n_s_integral
#define __pyx_n_s_integralRange __pyx_mstate_global->__pyx_n_s_integralRange
#define __pyx_n_s_integralTo __pyx_mstate_global->__pyx_n_s_integralTo
#define __pyx_n_s_io __pyx_mstate_global->__pyx_n_s_io
#define __pyx_n_s_is_coroutine __pyx_mstate_global->__pyx_n_s_is_coroutine
#define __pyx_kp_u_isenabled __pyx_mstate_global->__pyx_kp_u_isenabled
#define __pyx_n_s_iss __pyx_mstate_global->__pyx_n_s_iss
#define __pyx_n_s_istxt __pyx_mstate_global->__pyx_n_s_istxt
#define __pyx_n_s_items __pyx_mstate_global->__pyx_n_s_items
#define __pyx_n_s_iter __pyx_mstate_global->__pyx_n_s_iter
#define __pyx_n_s_iterable __pyx_mstate_global->__pyx_n_s_iterable
#define __pyx_n_s_iteritems __pyx_mstate_global->__pyx_n_s_iteritems
#define __pyx_n_s_itertools __pyx_mstate_global->__pyx_n_s_itertools
#define __pyx_n_s_ix __pyx_mstate_global->__pyx_n_s_ix
#define __pyx_n_s_j __pyx_mstate_global->__pyx_n_s_j
#define __pyx_n_s_k __pyx_mstate_global->__pyx_n_s_k
#define __pyx_n_s_key __pyx_mstate_global->__pyx_n_s_key
#define __pyx_n_s_kwargs __pyx_mstate_global->__pyx_n_s_kwargs
#define __pyx_n_s_linspace __pyx_mstate_global->__pyx_n_s_linspace
#define __pyx_n_s_logspace __pyx_mstate_global->__pyx_n_s_logspace
#define __pyx_n_s_low __pyx_mstate_global->__pyx_n_s_low
#define __pyx_n_s_lower __pyx_mstate_global->__pyx_n_s_lower
#define __pyx_n_s_main __pyx_mstate_global->__pyx_n_s_main
#define __pyx_n_s_max __pyx_mstate_global->__pyx_n_s_max
#define __pyx_n_s_mean __pyx_mstate_global->__pyx_n_s_mean
#define __pyx_n_s_merge __pyx_mstate_global->__pyx_n_s_merge
#define __pyx_n_s_mergeBins __pyx_mstate_global->__pyx_n_s_mergeBins
#define __pyx_n_s_metaclass __pyx_mstate_global->__pyx_n_s_metaclass
#define __pyx_n_s_min __pyx_mstate_global->__pyx_n_s_min
#define __pyx_n_s_mkIndexYODA __pyx_mstate_global->__pyx_n_s_mkIndexYODA
#define __pyx_n_s_mkScatter __pyx_mstate_global->__pyx_n_s_mkScatter
#define __pyx_n_s_mknp __pyx_mstate_global->__pyx_n_s_mknp
#define __pyx_n_s_mktxtifstr __pyx_mstate_global->__pyx_n_s_mktxtifstr
#define __pyx_n_s_module __pyx_mstate_global->__pyx_n_s_module
#define __pyx_n_s_n __pyx_mstate_global->__pyx_n_s_n
#define __pyx_kp_s_n_2 __pyx_mstate_global->__pyx_kp_s_n_2
#define __pyx_n_s_name __pyx_mstate_global->__pyx_n_s_name
#define __pyx_n_s_name_2 __pyx_mstate_global->__pyx_n_s_name_2
#define __pyx_n_s_nbins __pyx_mstate_global->__pyx_n_s_nbins
#define __pyx_n_s_new __pyx_mstate_global->__pyx_n_s_new
#define __pyx_n_s_normalize __pyx_mstate_global->__pyx_n_s_normalize
#define __pyx_n_s_normto __pyx_mstate_global->__pyx_n_s_normto
#define __pyx_n_s_nsample __pyx_mstate_global->__pyx_n_s_nsample
#define __pyx_n_s_numBins __pyx_mstate_global->__pyx_n_s_numBins
#define __pyx_n_s_numBinsX __pyx_mstate_global->__pyx_n_s_numBinsX
#define __pyx_n_s_numBinsY __pyx_mstate_global->__pyx_n_s_numBinsY
#define __pyx_n_s_numEntries __pyx_mstate_global->__pyx_n_s_numEntries
#define __pyx_n_s_numPoints __pyx_mstate_global->__pyx_n_s_numPoints
#define __pyx_n_s_numpy __pyx_mstate_global->__pyx_n_s_numpy
#define __pyx_n_s_nxbins __pyx_mstate_global->__pyx_n_s_nxbins
#define __pyx_n_s_nybins __pyx_mstate_global->__pyx_n_s_nybins
#define __pyx_n_s_oflow_binwidth __pyx_mstate_global->__pyx_n_s_oflow_binwidth
#define __pyx_n_s_open __pyx_mstate_global->__pyx_n_s_open
#define __pyx_n_s_operator __pyx_mstate_global->__pyx_n_s_operator
#define __pyx_n_s_oss __pyx_mstate_global->__pyx_n_s_oss
#define __pyx_n_s_other __pyx_mstate_global->__pyx_n_s_other
#define __pyx_n_s_others __pyx_mstate_global->__pyx_n_s_others
#define __pyx_n_s_overflow __pyx_mstate_global->__pyx_n_s_overflow
#define __pyx_n_s_p __pyx_mstate_global->__pyx_n_s_p
#define __pyx_n_s_p1ptr __pyx_mstate_global->__pyx_n_s_p1ptr
#define __pyx_n_s_p_usestddev __pyx_mstate_global->__pyx_n_s_p_usestddev
#define __pyx_n_s_parseVariations __pyx_mstate_global->__pyx_n_s_parseVariations
#define __pyx_n_s_parseyaml __pyx_mstate_global->__pyx_n_s_parseyaml
#define __pyx_n_s_path __pyx_mstate_global->__pyx_n_s_path
#define __pyx_n_s_pattern_check __pyx_mstate_global->__pyx_n_s_pattern_check
#define __pyx_n_s_pattern_check_locals_genexpr __pyx_mstate_global->__pyx_n_s_pattern_check_locals_genexpr
#define __pyx_n_s_patterns __pyx_mstate_global->__pyx_n_s_patterns
#define __pyx_n_s_pdfspace __pyx_mstate_global->__pyx_n_s_pdfspace
#define __pyx_n_s_point __pyx_mstate_global->__pyx_n_s_point
#define __pyx_n_s_points __pyx_mstate_global->__pyx_n_s_points
#define __pyx_n_s_precision __pyx_mstate_global->__pyx_n_s_precision
#define __pyx_n_s_prepare __pyx_mstate_global->__pyx_n_s_prepare
#define __pyx_n_s_pyx_state __pyx_mstate_global->__pyx_n_s_pyx_state
#define __pyx_n_s_pyx_vtable __pyx_mstate_global->__pyx_n_s_pyx_vtable
#define __pyx_n_s_qualname __pyx_mstate_global->__pyx_n_s_qualname
#define __pyx_n_s_range __pyx_mstate_global->__pyx_n_s_range
#define __pyx_n_s_rb __pyx_mstate_global->__pyx_n_s_rb
#define __pyx_n_s_re __pyx_mstate_global->__pyx_n_s_re
#define __pyx_n_s_read __pyx_mstate_global->__pyx_n_s_read
#define __pyx_n_s_readAIDA __pyx_mstate_global->__pyx_n_s_readAIDA
#define __pyx_n_s_readFLAT __pyx_mstate_global->__pyx_n_s_readFLAT
#define __pyx_n_s_readYODA __pyx_mstate_global->__pyx_n_s_readYODA
#define __pyx_n_s_read_error_pair __pyx_mstate_global->__pyx_n_s_read_error_pair
#define __pyx_n_s_read_symmetric __pyx_mstate_global->__pyx_n_s_read_symmetric
#define __pyx_n_s_rebin __pyx_mstate_global->__pyx_n_s_rebin
#define __pyx_n_s_rebinBy __pyx_mstate_global->__pyx_n_s_rebinBy
#define __pyx_n_s_rebinTo __pyx_mstate_global->__pyx_n_s_rebinTo
#define __pyx_n_s_reduce __pyx_mstate_global->__pyx_n_s_reduce
#define __pyx_n_s_reduce_cython __pyx_mstate_global->__pyx_n_s_reduce_cython
#define __pyx_n_s_reduce_ex __pyx_mstate_global->__pyx_n_s_reduce_ex
#define __pyx_n_s_relErr __pyx_mstate_global->__pyx_n_s_relErr
#define __pyx_n_s_relErrW __pyx_mstate_global->__pyx_n_s_relErrW
#define __pyx_n_s_relErrs __pyx_mstate_global->__pyx_n_s_relErrs
#define __pyx_n_s_repeat __pyx_mstate_global->__pyx_n_s_repeat
#define __pyx_n_s_replace __pyx_mstate_global->__pyx_n_s_replace
#define __pyx_n_s_repr __pyx_mstate_global->__pyx_n_s_repr
#define __pyx_n_s_repr_string __pyx_mstate_global->__pyx_n_s_repr_string
#define __pyx_n_s_reset __pyx_mstate_global->__pyx_n_s_reset
#define __pyx_n_s_reshape __pyx_mstate_global->__pyx_n_s_reshape
#define __pyx_n_s_rmAnnotation __pyx_mstate_global->__pyx_n_s_rmAnnotation
#define __pyx_n_s_rmPoint __pyx_mstate_global->__pyx_n_s_rmPoint
#define __pyx_n_s_rmPoints __pyx_mstate_global->__pyx_n_s_rmPoints
#define __pyx_n_s_rmVariations __pyx_mstate_global->__pyx_n_s_rmVariations
#define __pyx_n_s_rms __pyx_mstate_global->__pyx_n_s_rms
#define __pyx_n_s_row __pyx_mstate_global->__pyx_n_s_row
#define __pyx_n_s_rtn __pyx_mstate_global->__pyx_n_s_rtn
#define __pyx_n_s_s __pyx_mstate_global->__pyx_n_s_s
#define __pyx_n_s_s1 __pyx_mstate_global->__pyx_n_s_s1
#define __pyx_n_s_s2 __pyx_mstate_global->__pyx_n_s_s2
#define __pyx_n_s_s2ptr __pyx_mstate_global->__pyx_n_s_s2ptr
#define __pyx_n_s_s3 __pyx_mstate_global->__pyx_n_s_s3
#define __pyx_kp_s_s_s __pyx_mstate_global->__pyx_kp_s_s_s
#define __pyx_kp_s_s_s_d_bins_sumw_0_2g __pyx_mstate_global->__pyx_kp_s_s_s_d_bins_sumw_0_2g
#define __pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s __pyx_mstate_global->__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s
#define __pyx_kp_s_s_s_d_bins_sumw_2g __pyx_mstate_global->__pyx_kp_s_s_s_d_bins_sumw_2g
#define __pyx_kp_s_s_s_d_points __pyx_mstate_global->__pyx_kp_s_s_s_d_points
#define __pyx_kp_s_s_s_sumw_0_2g_err_s __pyx_mstate_global->__pyx_kp_s_s_s_sumw_0_2g_err_s
#define __pyx_kp_s_s_x_g_g __pyx_mstate_global->__pyx_kp_s_s_x_g_g
#define __pyx_kp_s_s_x_g_g_y_g_g __pyx_mstate_global->__pyx_kp_s_s_x_g_g_y_g_g
#define __pyx_n_s_sample __pyx_mstate_global->__pyx_n_s_sample
#define __pyx_n_s_sample1 __pyx_mstate_global->__pyx_n_s_sample1
#define __pyx_n_s_sample2 __pyx_mstate_global->__pyx_n_s_sample2
#define __pyx_n_s_scale __pyx_mstate_global->__pyx_n_s_scale
#define __pyx_n_s_scaleW __pyx_mstate_global->__pyx_n_s_scaleW
#define __pyx_n_s_scaleX __pyx_mstate_global->__pyx_n_s_scaleX
#define __pyx_n_s_scaleXY __pyx_mstate_global->__pyx_n_s_scaleXY
#define __pyx_n_s_scaleXYZ __pyx_mstate_global->__pyx_n_s_scaleXYZ
#define __pyx_n_s_scaleY __pyx_mstate_global->__pyx_n_s_scaleY
#define __pyx_n_s_scaleZ __pyx_mstate_global->__pyx_n_s_scaleZ
#define __pyx_n_s_sd __pyx_mstate_global->__pyx_n_s_sd
#define __pyx_n_s_search __pyx_mstate_global->__pyx_n_s_search
#define __pyx_n_s_seek __pyx_mstate_global->__pyx_n_s_seek
#define __pyx_n_s_self __pyx_mstate_global->__pyx_n_s_self
#define __pyx_kp_s_self__ptr_cannot_be_converted_to __pyx_mstate_global->__pyx_kp_s_self__ptr_cannot_be_converted_to
#define __pyx_n_s_send __pyx_mstate_global->__pyx_n_s_send
#define __pyx_n_s_set __pyx_mstate_global->__pyx_n_s_set
#define __pyx_n_s_setAnnotation __pyx_mstate_global->__pyx_n_s_setAnnotation
#define __pyx_n_s_setErr __pyx_mstate_global->__pyx_n_s_setErr
#define __pyx_n_s_setErrMinus __pyx_mstate_global->__pyx_n_s_setErrMinus
#define __pyx_n_s_setErrPlus __pyx_mstate_global->__pyx_n_s_setErrPlus
#define __pyx_n_s_setErrs __pyx_mstate_global->__pyx_n_s_setErrs
#define __pyx_n_s_setPath __pyx_mstate_global->__pyx_n_s_setPath
#define __pyx_n_s_setTitle __pyx_mstate_global->__pyx_n_s_setTitle
#define __pyx_n_s_setVal __pyx_mstate_global->__pyx_n_s_setVal
#define __pyx_n_s_setX __pyx_mstate_global->__pyx_n_s_setX
#define __pyx_n_s_setXErrs __pyx_mstate_global->__pyx_n_s_setXErrs
#define __pyx_n_s_setY __pyx_mstate_global->__pyx_n_s_setY
#define __pyx_n_s_setYErrs __pyx_mstate_global->__pyx_n_s_setYErrs
#define __pyx_n_s_setZ __pyx_mstate_global->__pyx_n_s_setZ
#define __pyx_n_s_setZErrs __pyx_mstate_global->__pyx_n_s_setZErrs
#define __pyx_n_s_set_name __pyx_mstate_global->__pyx_n_s_set_name
#define __pyx_n_s_setstate __pyx_mstate_global->__pyx_n_s_setstate
#define __pyx_n_s_setstate_cython __pyx_mstate_global->__pyx_n_s_setstate_cython
#define __pyx_n_s_sigma_i __pyx_mstate_global->__pyx_n_s_sigma_i
#define __pyx_n_s_sigma_j __pyx_mstate_global->__pyx_n_s_sigma_j
#define __pyx_n_s_source __pyx_mstate_global->__pyx_n_s_source
#define __pyx_n_s_spec __pyx_mstate_global->__pyx_n_s_spec
#define __pyx_n_s_stdDev __pyx_mstate_global->__pyx_n_s_stdDev
#define __pyx_n_s_stdErr __pyx_mstate_global->__pyx_n_s_stdErr
#define __pyx_n_s_stdin __pyx_mstate_global->__pyx_n_s_stdin
#define __pyx_n_s_stdout __pyx_mstate_global->__pyx_n_s_stdout
#define __pyx_n_s_str __pyx_mstate_global->__pyx_n_s_str
#define __pyx_n_s_str_to_file __pyx_mstate_global->__pyx_n_s_str_to_file
#define __pyx_kp_s_stringsource __pyx_mstate_global->__pyx_kp_s_stringsource
#define __pyx_n_s_strip __pyx_mstate_global->__pyx_n_s_strip
#define __pyx_n_s_sum __pyx_mstate_global->__pyx_n_s_sum
#define __pyx_n_s_sumW __pyx_mstate_global->__pyx_n_s_sumW
#define __pyx_n_s_sumW2 __pyx_mstate_global->__pyx_n_s_sumW2
#define __pyx_n_s_sumWX __pyx_mstate_global->__pyx_n_s_sumWX
#define __pyx_n_s_sumWX2 __pyx_mstate_global->__pyx_n_s_sumWX2
#define __pyx_n_s_sumWXY __pyx_mstate_global->__pyx_n_s_sumWXY
#define __pyx_n_s_sumWXZ __pyx_mstate_global->__pyx_n_s_sumWXZ
#define __pyx_n_s_sumWY __pyx_mstate_global->__pyx_n_s_sumWY
#define __pyx_n_s_sumWY2 __pyx_mstate_global->__pyx_n_s_sumWY2
#define __pyx_n_s_sumWYZ __pyx_mstate_global->__pyx_n_s_sumWYZ
#define __pyx_n_s_sumWZ __pyx_mstate_global->__pyx_n_s_sumWZ
#define __pyx_n_s_sumWZ2 __pyx_mstate_global->__pyx_n_s_sumWZ2
#define __pyx_n_s_sumWs __pyx_mstate_global->__pyx_n_s_sumWs
#define __pyx_n_s_super __pyx_mstate_global->__pyx_n_s_super
#define __pyx_n_s_sys __pyx_mstate_global->__pyx_n_s_sys
#define __pyx_n_s_test __pyx_mstate_global->__pyx_n_s_test
#define __pyx_n_s_throw __pyx_mstate_global->__pyx_n_s_throw
#define __pyx_n_s_title __pyx_mstate_global->__pyx_n_s_title
#define __pyx_n_s_toDict __pyx_mstate_global->__pyx_n_s_toDict
#define __pyx_n_s_toIntegral __pyx_mstate_global->__pyx_n_s_toIntegral
#define __pyx_n_s_totalDbn __pyx_mstate_global->__pyx_n_s_totalDbn
#define __pyx_n_s_transformX __pyx_mstate_global->__pyx_n_s_transformX
#define __pyx_n_s_transformY __pyx_mstate_global->__pyx_n_s_transformY
#define __pyx_n_s_transformZ __pyx_mstate_global->__pyx_n_s_transformZ
#define __pyx_n_s_try_loop __pyx_mstate_global->__pyx_n_s_try_loop
#define __pyx_n_s_tuples __pyx_mstate_global->__pyx_n_s_tuples
#define __pyx_n_s_type __pyx_mstate_global->__pyx_n_s_type
#define __pyx_n_s_uflow_binwidth __pyx_mstate_global->__pyx_n_s_uflow_binwidth
#define __pyx_n_s_underflow __pyx_mstate_global->__pyx_n_s_underflow
#define __pyx_n_s_unique __pyx_mstate_global->__pyx_n_s_unique
#define __pyx_n_s_unpatterns __pyx_mstate_global->__pyx_n_s_unpatterns
#define __pyx_n_s_updateTotalUncertainty __pyx_mstate_global->__pyx_n_s_updateTotalUncertainty
#define __pyx_n_s_upper __pyx_mstate_global->__pyx_n_s_upper
#define __pyx_n_s_usefocus __pyx_mstate_global->__pyx_n_s_usefocus
#define __pyx_n_s_usestddev __pyx_mstate_global->__pyx_n_s_usestddev
#define __pyx_kp_s_utf_8 __pyx_mstate_global->__pyx_kp_s_utf_8
#define __pyx_n_s_util __pyx_mstate_global->__pyx_n_s_util
#define __pyx_n_s_v __pyx_mstate_global->__pyx_n_s_v
#define __pyx_n_s_val __pyx_mstate_global->__pyx_n_s_val
#define __pyx_n_s_values __pyx_mstate_global->__pyx_n_s_values
#define __pyx_n_s_var __pyx_mstate_global->__pyx_n_s_var
#define __pyx_n_s_variance __pyx_mstate_global->__pyx_n_s_variance
#define __pyx_n_s_variations __pyx_mstate_global->__pyx_n_s_variations
#define __pyx_n_s_vars __pyx_mstate_global->__pyx_n_s_vars
#define __pyx_n_s_vec __pyx_mstate_global->__pyx_n_s_vec
#define __pyx_n_s_version __pyx_mstate_global->__pyx_n_s_version
#define __pyx_n_s_version_info __pyx_mstate_global->__pyx_n_s_version_info
#define __pyx_n_s_vol __pyx_mstate_global->__pyx_n_s_vol
#define __pyx_n_s_volErrs __pyx_mstate_global->__pyx_n_s_volErrs
#define __pyx_n_s_volume __pyx_mstate_global->__pyx_n_s_volume
#define __pyx_n_s_volumeErr __pyx_mstate_global->__pyx_n_s_volumeErr
#define __pyx_n_s_volumeErrs __pyx_mstate_global->__pyx_n_s_volumeErrs
#define __pyx_n_s_volumes __pyx_mstate_global->__pyx_n_s_volumes
#define __pyx_n_s_w __pyx_mstate_global->__pyx_n_s_w
#define __pyx_n_s_weight __pyx_mstate_global->__pyx_n_s_weight
#define __pyx_n_s_write __pyx_mstate_global->__pyx_n_s_write
#define __pyx_n_s_writeAIDA __pyx_mstate_global->__pyx_n_s_writeAIDA
#define __pyx_n_s_writeFLAT __pyx_mstate_global->__pyx_n_s_writeFLAT
#define __pyx_n_s_writeVariationsToAnnotations __pyx_mstate_global->__pyx_n_s_writeVariationsToAnnotations
#define __pyx_n_s_writeYODA __pyx_mstate_global->__pyx_n_s_writeYODA
#define __pyx_n_s_x __pyx_mstate_global->__pyx_n_s_x
#define __pyx_n_s_xEdges __pyx_mstate_global->__pyx_n_s_xEdges
#define __pyx_n_s_xErrAvg __pyx_mstate_global->__pyx_n_s_xErrAvg
#define __pyx_n_s_xErrAvgs __pyx_mstate_global->__pyx_n_s_xErrAvgs
#define __pyx_n_s_xErrs __pyx_mstate_global->__pyx_n_s_xErrs
#define __pyx_n_s_xErrsFromSource __pyx_mstate_global->__pyx_n_s_xErrsFromSource
#define __pyx_n_s_xFoci __pyx_mstate_global->__pyx_n_s_xFoci
#define __pyx_n_s_xFocus __pyx_mstate_global->__pyx_n_s_xFocus
#define __pyx_n_s_xMax __pyx_mstate_global->__pyx_n_s_xMax
#define __pyx_n_s_xMaxs __pyx_mstate_global->__pyx_n_s_xMaxs
#define __pyx_n_s_xMean __pyx_mstate_global->__pyx_n_s_xMean
#define __pyx_n_s_xMid __pyx_mstate_global->__pyx_n_s_xMid
#define __pyx_n_s_xMids __pyx_mstate_global->__pyx_n_s_xMids
#define __pyx_n_s_xMin __pyx_mstate_global->__pyx_n_s_xMin
#define __pyx_n_s_xMins __pyx_mstate_global->__pyx_n_s_xMins
#define __pyx_n_s_xRMS __pyx_mstate_global->__pyx_n_s_xRMS
#define __pyx_n_s_xStdDev __pyx_mstate_global->__pyx_n_s_xStdDev
#define __pyx_n_s_xStdErr __pyx_mstate_global->__pyx_n_s_xStdErr
#define __pyx_n_s_xVals __pyx_mstate_global->__pyx_n_s_xVals
#define __pyx_n_s_xVariance __pyx_mstate_global->__pyx_n_s_xVariance
#define __pyx_n_s_xWidth __pyx_mstate_global->__pyx_n_s_xWidth
#define __pyx_n_s_xWidths __pyx_mstate_global->__pyx_n_s_xWidths
#define __pyx_n_s_xcuts __pyx_mstate_global->__pyx_n_s_xcuts
#define __pyx_n_s_xcuts_2 __pyx_mstate_global->__pyx_n_s_xcuts_2
#define __pyx_n_s_xedges __pyx_mstate_global->__pyx_n_s_xedges
#define __pyx_n_s_xerrs __pyx_mstate_global->__pyx_n_s_xerrs
#define __pyx_n_s_xhigh __pyx_mstate_global->__pyx_n_s_xhigh
#define __pyx_n_s_xlow __pyx_mstate_global->__pyx_n_s_xlow
#define __pyx_n_s_xmax __pyx_mstate_global->__pyx_n_s_xmax
#define __pyx_n_s_xmin __pyx_mstate_global->__pyx_n_s_xmin
#define __pyx_n_s_xs __pyx_mstate_global->__pyx_n_s_xs
#define __pyx_n_s_xyEdges __pyx_mstate_global->__pyx_n_s_xyEdges
#define __pyx_n_s_xyFocus __pyx_mstate_global->__pyx_n_s_xyFocus
#define __pyx_n_s_xyMax __pyx_mstate_global->__pyx_n_s_xyMax
#define __pyx_n_s_xyMean __pyx_mstate_global->__pyx_n_s_xyMean
#define __pyx_n_s_xyMid __pyx_mstate_global->__pyx_n_s_xyMid
#define __pyx_n_s_xyMin __pyx_mstate_global->__pyx_n_s_xyMin
#define __pyx_n_s_xyRMS __pyx_mstate_global->__pyx_n_s_xyRMS
#define __pyx_n_s_xyStdDev __pyx_mstate_global->__pyx_n_s_xyStdDev
#define __pyx_n_s_xyStdErr __pyx_mstate_global->__pyx_n_s_xyStdErr
#define __pyx_n_s_xyVariance __pyx_mstate_global->__pyx_n_s_xyVariance
#define __pyx_n_s_xyWidths __pyx_mstate_global->__pyx_n_s_xyWidths
#define __pyx_n_s_y __pyx_mstate_global->__pyx_n_s_y
#define __pyx_n_s_yEdges __pyx_mstate_global->__pyx_n_s_yEdges
#define __pyx_n_s_yErrAvg __pyx_mstate_global->__pyx_n_s_yErrAvg
#define __pyx_n_s_yErrAvgs __pyx_mstate_global->__pyx_n_s_yErrAvgs
#define __pyx_n_s_yErrs __pyx_mstate_global->__pyx_n_s_yErrs
#define __pyx_n_s_yErrsFromSource __pyx_mstate_global->__pyx_n_s_yErrsFromSource
#define __pyx_n_s_yFoci __pyx_mstate_global->__pyx_n_s_yFoci
#define __pyx_n_s_yFocus __pyx_mstate_global->__pyx_n_s_yFocus
#define __pyx_n_s_yMax __pyx_mstate_global->__pyx_n_s_yMax
#define __pyx_n_s_yMaxs __pyx_mstate_global->__pyx_n_s_yMaxs
#define __pyx_n_s_yMean __pyx_mstate_global->__pyx_n_s_yMean
#define __pyx_n_s_yMeans __pyx_mstate_global->__pyx_n_s_yMeans
#define __pyx_n_s_yMid __pyx_mstate_global->__pyx_n_s_yMid
#define __pyx_n_s_yMids __pyx_mstate_global->__pyx_n_s_yMids
#define __pyx_n_s_yMin __pyx_mstate_global->__pyx_n_s_yMin
#define __pyx_n_s_yMins __pyx_mstate_global->__pyx_n_s_yMins
#define __pyx_n_s_yRMS __pyx_mstate_global->__pyx_n_s_yRMS
#define __pyx_n_s_yStdDev __pyx_mstate_global->__pyx_n_s_yStdDev
#define __pyx_n_s_yStdDevs __pyx_mstate_global->__pyx_n_s_yStdDevs
#define __pyx_n_s_yStdErr __pyx_mstate_global->__pyx_n_s_yStdErr
#define __pyx_n_s_yStdErrs __pyx_mstate_global->__pyx_n_s_yStdErrs
#define __pyx_n_s_yVals __pyx_mstate_global->__pyx_n_s_yVals
#define __pyx_n_s_yVariance __pyx_mstate_global->__pyx_n_s_yVariance
#define __pyx_n_s_yWidth __pyx_mstate_global->__pyx_n_s_yWidth
#define __pyx_n_s_yWidths __pyx_mstate_global->__pyx_n_s_yWidths
#define __pyx_n_s_ycuts __pyx_mstate_global->__pyx_n_s_ycuts
#define __pyx_n_s_ycuts_2 __pyx_mstate_global->__pyx_n_s_ycuts_2
#define __pyx_n_s_yedges __pyx_mstate_global->__pyx_n_s_yedges
#define __pyx_n_s_yerrs __pyx_mstate_global->__pyx_n_s_yerrs
#define __pyx_n_s_yhigh __pyx_mstate_global->__pyx_n_s_yhigh
#define __pyx_n_s_ylow __pyx_mstate_global->__pyx_n_s_ylow
#define __pyx_n_b_yoda __pyx_mstate_global->__pyx_n_b_yoda
#define __pyx_n_s_yoda __pyx_mstate_global->__pyx_n_s_yoda
#define __pyx_n_s_yoda_core __pyx_mstate_global->__pyx_n_s_yoda_core
#define __pyx_n_s_yoda_util __pyx_mstate_global->__pyx_n_s_yoda_util
#define __pyx_n_s_ys __pyx_mstate_global->__pyx_n_s_ys
#define __pyx_n_s_z __pyx_mstate_global->__pyx_n_s_z
#define __pyx_n_s_zErrAvg __pyx_mstate_global->__pyx_n_s_zErrAvg
#define __pyx_n_s_zErrs __pyx_mstate_global->__pyx_n_s_zErrs
#define __pyx_n_s_zErrsFromSource __pyx_mstate_global->__pyx_n_s_zErrsFromSource
#define __pyx_n_s_zMax __pyx_mstate_global->__pyx_n_s_zMax
#define __pyx_n_s_zMaxs __pyx_mstate_global->__pyx_n_s_zMaxs
#define __pyx_n_s_zMeans __pyx_mstate_global->__pyx_n_s_zMeans
#define __pyx_n_s_zMin __pyx_mstate_global->__pyx_n_s_zMin
#define __pyx_n_s_zMins __pyx_mstate_global->__pyx_n_s_zMins
#define __pyx_n_s_zStdDev __pyx_mstate_global->__pyx_n_s_zStdDev
#define __pyx_n_s_zStdDevs __pyx_mstate_global->__pyx_n_s_zStdDevs
#define __pyx_n_s_zStdErr __pyx_mstate_global->__pyx_n_s_zStdErr
#define __pyx_n_s_zStdErrs __pyx_mstate_global->__pyx_n_s_zStdErrs
#define __pyx_n_s_zVals __pyx_mstate_global->__pyx_n_s_zVals
#define __pyx_n_s_zerrs __pyx_mstate_global->__pyx_n_s_zerrs
#define __pyx_n_s_zip __pyx_mstate_global->__pyx_n_s_zip
#define __pyx_n_s_zs __pyx_mstate_global->__pyx_n_s_zs
#define __pyx_float_0_ __pyx_mstate_global->__pyx_float_0_
#define __pyx_float_2_ __pyx_mstate_global->__pyx_float_2_
#define __pyx_float_0_5 __pyx_mstate_global->__pyx_float_0_5
#define __pyx_float_1_0 __pyx_mstate_global->__pyx_float_1_0
#define __pyx_float_neg_1_ __pyx_mstate_global->__pyx_float_neg_1_
#define __pyx_int_0 __pyx_mstate_global->__pyx_int_0
#define __pyx_int_1 __pyx_mstate_global->__pyx_int_1
#define __pyx_int_2 __pyx_mstate_global->__pyx_int_2
#define __pyx_int_3 __pyx_mstate_global->__pyx_int_3
#define __pyx_int_10000 __pyx_mstate_global->__pyx_int_10000
#define __pyx_int_neg_1 __pyx_mstate_global->__pyx_int_neg_1
#define __pyx_tuple_ __pyx_mstate_global->__pyx_tuple_
#define __pyx_slice__5 __pyx_mstate_global->__pyx_slice__5
#define __pyx_slice__6 __pyx_mstate_global->__pyx_slice__6
#define __pyx_tuple__7 __pyx_mstate_global->__pyx_tuple__7
#define __pyx_tuple__9 __pyx_mstate_global->__pyx_tuple__9
#define __pyx_tuple__10 __pyx_mstate_global->__pyx_tuple__10
#define __pyx_tuple__12 __pyx_mstate_global->__pyx_tuple__12
#define __pyx_tuple__13 __pyx_mstate_global->__pyx_tuple__13
#define __pyx_tuple__18 __pyx_mstate_global->__pyx_tuple__18
#define __pyx_tuple__21 __pyx_mstate_global->__pyx_tuple__21
#define __pyx_tuple__23 __pyx_mstate_global->__pyx_tuple__23
#define __pyx_tuple__24 __pyx_mstate_global->__pyx_tuple__24
#define __pyx_tuple__33 __pyx_mstate_global->__pyx_tuple__33
#define __pyx_tuple__37 __pyx_mstate_global->__pyx_tuple__37
#define __pyx_tuple__40 __pyx_mstate_global->__pyx_tuple__40
#define __pyx_tuple__59 __pyx_mstate_global->__pyx_tuple__59
#define __pyx_tuple__63 __pyx_mstate_global->__pyx_tuple__63
#define __pyx_tuple__65 __pyx_mstate_global->__pyx_tuple__65
#define __pyx_tuple__86 __pyx_mstate_global->__pyx_tuple__86
#define __pyx_tuple__92 __pyx_mstate_global->__pyx_tuple__92
#define __pyx_tuple__94 __pyx_mstate_global->__pyx_tuple__94
#define __pyx_tuple__129 __pyx_mstate_global->__pyx_tuple__129
#define __pyx_tuple__131 __pyx_mstate_global->__pyx_tuple__131
#define __pyx_tuple__133 __pyx_mstate_global->__pyx_tuple__133
#define __pyx_tuple__156 __pyx_mstate_global->__pyx_tuple__156
#define __pyx_tuple__194 __pyx_mstate_global->__pyx_tuple__194
#define __pyx_tuple__196 __pyx_mstate_global->__pyx_tuple__196
#define __pyx_tuple__198 __pyx_mstate_global->__pyx_tuple__198
#define __pyx_tuple__200 __pyx_mstate_global->__pyx_tuple__200
#define __pyx_tuple__201 __pyx_mstate_global->__pyx_tuple__201
#define __pyx_tuple__203 __pyx_mstate_global->__pyx_tuple__203
#define __pyx_tuple__207 __pyx_mstate_global->__pyx_tuple__207
#define __pyx_tuple__211 __pyx_mstate_global->__pyx_tuple__211
#define __pyx_tuple__214 __pyx_mstate_global->__pyx_tuple__214
#define __pyx_tuple__218 __pyx_mstate_global->__pyx_tuple__218
#define __pyx_tuple__220 __pyx_mstate_global->__pyx_tuple__220
#define __pyx_tuple__221 __pyx_mstate_global->__pyx_tuple__221
#define __pyx_tuple__223 __pyx_mstate_global->__pyx_tuple__223
#define __pyx_tuple__228 __pyx_mstate_global->__pyx_tuple__228
#define __pyx_tuple__233 __pyx_mstate_global->__pyx_tuple__233
#define __pyx_tuple__235 __pyx_mstate_global->__pyx_tuple__235
#define __pyx_tuple__236 __pyx_mstate_global->__pyx_tuple__236
#define __pyx_tuple__238 __pyx_mstate_global->__pyx_tuple__238
#define __pyx_tuple__250 __pyx_mstate_global->__pyx_tuple__250
#define __pyx_tuple__252 __pyx_mstate_global->__pyx_tuple__252
#define __pyx_tuple__258 __pyx_mstate_global->__pyx_tuple__258
#define __pyx_tuple__262 __pyx_mstate_global->__pyx_tuple__262
#define __pyx_tuple__264 __pyx_mstate_global->__pyx_tuple__264
#define __pyx_tuple__266 __pyx_mstate_global->__pyx_tuple__266
#define __pyx_tuple__268 __pyx_mstate_global->__pyx_tuple__268
#define __pyx_tuple__270 __pyx_mstate_global->__pyx_tuple__270
#define __pyx_tuple__272 __pyx_mstate_global->__pyx_tuple__272
#define __pyx_tuple__275 __pyx_mstate_global->__pyx_tuple__275
#define __pyx_tuple__277 __pyx_mstate_global->__pyx_tuple__277
#define __pyx_tuple__278 __pyx_mstate_global->__pyx_tuple__278
#define __pyx_tuple__280 __pyx_mstate_global->__pyx_tuple__280
#define __pyx_tuple__282 __pyx_mstate_global->__pyx_tuple__282
#define __pyx_tuple__284 __pyx_mstate_global->__pyx_tuple__284
#define __pyx_tuple__285 __pyx_mstate_global->__pyx_tuple__285
#define __pyx_tuple__287 __pyx_mstate_global->__pyx_tuple__287
#define __pyx_tuple__288 __pyx_mstate_global->__pyx_tuple__288
#define __pyx_tuple__290 __pyx_mstate_global->__pyx_tuple__290
#define __pyx_tuple__294 __pyx_mstate_global->__pyx_tuple__294
#define __pyx_tuple__299 __pyx_mstate_global->__pyx_tuple__299
#define __pyx_tuple__301 __pyx_mstate_global->__pyx_tuple__301
#define __pyx_tuple__305 __pyx_mstate_global->__pyx_tuple__305
#define __pyx_tuple__309 __pyx_mstate_global->__pyx_tuple__309
#define __pyx_tuple__315 __pyx_mstate_global->__pyx_tuple__315
#define __pyx_tuple__324 __pyx_mstate_global->__pyx_tuple__324
#define __pyx_tuple__329 __pyx_mstate_global->__pyx_tuple__329
#define __pyx_tuple__344 __pyx_mstate_global->__pyx_tuple__344
#define __pyx_tuple__355 __pyx_mstate_global->__pyx_tuple__355
#define __pyx_tuple__357 __pyx_mstate_global->__pyx_tuple__357
#define __pyx_tuple__362 __pyx_mstate_global->__pyx_tuple__362
#define __pyx_tuple__364 __pyx_mstate_global->__pyx_tuple__364
#define __pyx_tuple__365 __pyx_mstate_global->__pyx_tuple__365
#define __pyx_tuple__383 __pyx_mstate_global->__pyx_tuple__383
#define __pyx_tuple__385 __pyx_mstate_global->__pyx_tuple__385
#define __pyx_tuple__493 __pyx_mstate_global->__pyx_tuple__493
#define __pyx_tuple__495 __pyx_mstate_global->__pyx_tuple__495
#define __pyx_tuple__500 __pyx_mstate_global->__pyx_tuple__500
#define __pyx_tuple__536 __pyx_mstate_global->__pyx_tuple__536
#define __pyx_tuple__538 __pyx_mstate_global->__pyx_tuple__538
#define __pyx_tuple__540 __pyx_mstate_global->__pyx_tuple__540
#define __pyx_tuple__542 __pyx_mstate_global->__pyx_tuple__542
#define __pyx_tuple__549 __pyx_mstate_global->__pyx_tuple__549
#define __pyx_tuple__551 __pyx_mstate_global->__pyx_tuple__551
#define __pyx_tuple__554 __pyx_mstate_global->__pyx_tuple__554
#define __pyx_tuple__556 __pyx_mstate_global->__pyx_tuple__556
#define __pyx_tuple__558 __pyx_mstate_global->__pyx_tuple__558
#define __pyx_tuple__559 __pyx_mstate_global->__pyx_tuple__559
#define __pyx_tuple__574 __pyx_mstate_global->__pyx_tuple__574
#define __pyx_tuple__576 __pyx_mstate_global->__pyx_tuple__576
#define __pyx_tuple__581 __pyx_mstate_global->__pyx_tuple__581
#define __pyx_tuple__594 __pyx_mstate_global->__pyx_tuple__594
#define __pyx_tuple__630 __pyx_mstate_global->__pyx_tuple__630
#define __pyx_tuple__632 __pyx_mstate_global->__pyx_tuple__632
#define __pyx_tuple__658 __pyx_mstate_global->__pyx_tuple__658
#define __pyx_tuple__662 __pyx_mstate_global->__pyx_tuple__662
#define __pyx_tuple__664 __pyx_mstate_global->__pyx_tuple__664
#define __pyx_tuple__673 __pyx_mstate_global->__pyx_tuple__673
#define __pyx_tuple__675 __pyx_mstate_global->__pyx_tuple__675
#define __pyx_tuple__677 __pyx_mstate_global->__pyx_tuple__677
#define __pyx_tuple__678 __pyx_mstate_global->__pyx_tuple__678
#define __pyx_tuple__680 __pyx_mstate_global->__pyx_tuple__680
#define __pyx_tuple__687 __pyx_mstate_global->__pyx_tuple__687
#define __pyx_tuple__689 __pyx_mstate_global->__pyx_tuple__689
#define __pyx_tuple__692 __pyx_mstate_global->__pyx_tuple__692
#define __pyx_tuple__697 __pyx_mstate_global->__pyx_tuple__697
#define __pyx_tuple__699 __pyx_mstate_global->__pyx_tuple__699
#define __pyx_tuple__704 __pyx_mstate_global->__pyx_tuple__704
#define __pyx_tuple__718 __pyx_mstate_global->__pyx_tuple__718
#define __pyx_tuple__761 __pyx_mstate_global->__pyx_tuple__761
#define __pyx_tuple__763 __pyx_mstate_global->__pyx_tuple__763
#define __pyx_tuple__765 __pyx_mstate_global->__pyx_tuple__765
#define __pyx_tuple__767 __pyx_mstate_global->__pyx_tuple__767
#define __pyx_tuple__769 __pyx_mstate_global->__pyx_tuple__769
#define __pyx_tuple__774 __pyx_mstate_global->__pyx_tuple__774
#define __pyx_tuple__781 __pyx_mstate_global->__pyx_tuple__781
#define __pyx_tuple__783 __pyx_mstate_global->__pyx_tuple__783
#define __pyx_tuple__785 __pyx_mstate_global->__pyx_tuple__785
#define __pyx_tuple__786 __pyx_mstate_global->__pyx_tuple__786
#define __pyx_tuple__788 __pyx_mstate_global->__pyx_tuple__788
#define __pyx_tuple__790 __pyx_mstate_global->__pyx_tuple__790
#define __pyx_tuple__792 __pyx_mstate_global->__pyx_tuple__792
#define __pyx_tuple__794 __pyx_mstate_global->__pyx_tuple__794
#define __pyx_tuple__796 __pyx_mstate_global->__pyx_tuple__796
#define __pyx_tuple__800 __pyx_mstate_global->__pyx_tuple__800
#define __pyx_tuple__805 __pyx_mstate_global->__pyx_tuple__805
#define __pyx_tuple__808 __pyx_mstate_global->__pyx_tuple__808
#define __pyx_tuple__826 __pyx_mstate_global->__pyx_tuple__826
#define __pyx_tuple__828 __pyx_mstate_global->__pyx_tuple__828
#define __pyx_tuple__837 __pyx_mstate_global->__pyx_tuple__837
#define __pyx_tuple__848 __pyx_mstate_global->__pyx_tuple__848
#define __pyx_tuple__851 __pyx_mstate_global->__pyx_tuple__851
#define __pyx_tuple__871 __pyx_mstate_global->__pyx_tuple__871
#define __pyx_tuple__878 __pyx_mstate_global->__pyx_tuple__878
#define __pyx_tuple__880 __pyx_mstate_global->__pyx_tuple__880
#define __pyx_tuple__886 __pyx_mstate_global->__pyx_tuple__886
#define __pyx_tuple__892 __pyx_mstate_global->__pyx_tuple__892
#define __pyx_tuple__924 __pyx_mstate_global->__pyx_tuple__924
#define __pyx_tuple__926 __pyx_mstate_global->__pyx_tuple__926
#define __pyx_tuple__927 __pyx_mstate_global->__pyx_tuple__927
#define __pyx_tuple__929 __pyx_mstate_global->__pyx_tuple__929
#define __pyx_tuple__932 __pyx_mstate_global->__pyx_tuple__932
#define __pyx_tuple__934 __pyx_mstate_global->__pyx_tuple__934
#define __pyx_tuple__935 __pyx_mstate_global->__pyx_tuple__935
#define __pyx_tuple__937 __pyx_mstate_global->__pyx_tuple__937
#define __pyx_tuple__939 __pyx_mstate_global->__pyx_tuple__939
#define __pyx_tuple__942 __pyx_mstate_global->__pyx_tuple__942
#define __pyx_tuple__944 __pyx_mstate_global->__pyx_tuple__944
#define __pyx_tuple__946 __pyx_mstate_global->__pyx_tuple__946
#define __pyx_tuple__948 __pyx_mstate_global->__pyx_tuple__948
#define __pyx_tuple__951 __pyx_mstate_global->__pyx_tuple__951
#define __pyx_tuple__953 __pyx_mstate_global->__pyx_tuple__953
#define __pyx_tuple__954 __pyx_mstate_global->__pyx_tuple__954
#define __pyx_tuple__956 __pyx_mstate_global->__pyx_tuple__956
#define __pyx_tuple__958 __pyx_mstate_global->__pyx_tuple__958
#define __pyx_tuple__960 __pyx_mstate_global->__pyx_tuple__960
#define __pyx_tuple__961 __pyx_mstate_global->__pyx_tuple__961
#define __pyx_tuple__963 __pyx_mstate_global->__pyx_tuple__963
#define __pyx_tuple__964 __pyx_mstate_global->__pyx_tuple__964
#define __pyx_tuple__966 __pyx_mstate_global->__pyx_tuple__966
#define __pyx_tuple__968 __pyx_mstate_global->__pyx_tuple__968
#define __pyx_tuple__970 __pyx_mstate_global->__pyx_tuple__970
#define __pyx_tuple__971 __pyx_mstate_global->__pyx_tuple__971
#define __pyx_tuple__975 __pyx_mstate_global->__pyx_tuple__975
#define __pyx_codeobj__14 __pyx_mstate_global->__pyx_codeobj__14
#define __pyx_codeobj__15 __pyx_mstate_global->__pyx_codeobj__15
#define __pyx_codeobj__16 __pyx_mstate_global->__pyx_codeobj__16
#define __pyx_codeobj__17 __pyx_mstate_global->__pyx_codeobj__17
#define __pyx_codeobj__19 __pyx_mstate_global->__pyx_codeobj__19
#define __pyx_codeobj__20 __pyx_mstate_global->__pyx_codeobj__20
#define __pyx_codeobj__22 __pyx_mstate_global->__pyx_codeobj__22
#define __pyx_codeobj__25 __pyx_mstate_global->__pyx_codeobj__25
#define __pyx_codeobj__26 __pyx_mstate_global->__pyx_codeobj__26
#define __pyx_codeobj__27 __pyx_mstate_global->__pyx_codeobj__27
#define __pyx_codeobj__28 __pyx_mstate_global->__pyx_codeobj__28
#define __pyx_codeobj__29 __pyx_mstate_global->__pyx_codeobj__29
#define __pyx_codeobj__30 __pyx_mstate_global->__pyx_codeobj__30
#define __pyx_codeobj__31 __pyx_mstate_global->__pyx_codeobj__31
#define __pyx_codeobj__32 __pyx_mstate_global->__pyx_codeobj__32
#define __pyx_codeobj__34 __pyx_mstate_global->__pyx_codeobj__34
#define __pyx_codeobj__35 __pyx_mstate_global->__pyx_codeobj__35
#define __pyx_codeobj__36 __pyx_mstate_global->__pyx_codeobj__36
#define __pyx_codeobj__38 __pyx_mstate_global->__pyx_codeobj__38
#define __pyx_codeobj__39 __pyx_mstate_global->__pyx_codeobj__39
#define __pyx_codeobj__41 __pyx_mstate_global->__pyx_codeobj__41
#define __pyx_codeobj__42 __pyx_mstate_global->__pyx_codeobj__42
#define __pyx_codeobj__43 __pyx_mstate_global->__pyx_codeobj__43
#define __pyx_codeobj__44 __pyx_mstate_global->__pyx_codeobj__44
#define __pyx_codeobj__45 __pyx_mstate_global->__pyx_codeobj__45
#define __pyx_codeobj__46 __pyx_mstate_global->__pyx_codeobj__46
#define __pyx_codeobj__47 __pyx_mstate_global->__pyx_codeobj__47
#define __pyx_codeobj__48 __pyx_mstate_global->__pyx_codeobj__48
#define __pyx_codeobj__49 __pyx_mstate_global->__pyx_codeobj__49
#define __pyx_codeobj__50 __pyx_mstate_global->__pyx_codeobj__50
#define __pyx_codeobj__51 __pyx_mstate_global->__pyx_codeobj__51
#define __pyx_codeobj__52 __pyx_mstate_global->__pyx_codeobj__52
#define __pyx_codeobj__53 __pyx_mstate_global->__pyx_codeobj__53
#define __pyx_codeobj__54 __pyx_mstate_global->__pyx_codeobj__54
#define __pyx_codeobj__55 __pyx_mstate_global->__pyx_codeobj__55
#define __pyx_codeobj__56 __pyx_mstate_global->__pyx_codeobj__56
#define __pyx_codeobj__57 __pyx_mstate_global->__pyx_codeobj__57
#define __pyx_codeobj__58 __pyx_mstate_global->__pyx_codeobj__58
#define __pyx_codeobj__60 __pyx_mstate_global->__pyx_codeobj__60
#define __pyx_codeobj__61 __pyx_mstate_global->__pyx_codeobj__61
#define __pyx_codeobj__62 __pyx_mstate_global->__pyx_codeobj__62
#define __pyx_codeobj__64 __pyx_mstate_global->__pyx_codeobj__64
#define __pyx_codeobj__66 __pyx_mstate_global->__pyx_codeobj__66
#define __pyx_codeobj__67 __pyx_mstate_global->__pyx_codeobj__67
#define __pyx_codeobj__68 __pyx_mstate_global->__pyx_codeobj__68
#define __pyx_codeobj__69 __pyx_mstate_global->__pyx_codeobj__69
#define __pyx_codeobj__70 __pyx_mstate_global->__pyx_codeobj__70
#define __pyx_codeobj__71 __pyx_mstate_global->__pyx_codeobj__71
#define __pyx_codeobj__72 __pyx_mstate_global->__pyx_codeobj__72
#define __pyx_codeobj__73 __pyx_mstate_global->__pyx_codeobj__73
#define __pyx_codeobj__74 __pyx_mstate_global->__pyx_codeobj__74
#define __pyx_codeobj__75 __pyx_mstate_global->__pyx_codeobj__75
#define __pyx_codeobj__76 __pyx_mstate_global->__pyx_codeobj__76
#define __pyx_codeobj__77 __pyx_mstate_global->__pyx_codeobj__77
#define __pyx_codeobj__78 __pyx_mstate_global->__pyx_codeobj__78
#define __pyx_codeobj__79 __pyx_mstate_global->__pyx_codeobj__79
#define __pyx_codeobj__80 __pyx_mstate_global->__pyx_codeobj__80
#define __pyx_codeobj__81 __pyx_mstate_global->__pyx_codeobj__81
#define __pyx_codeobj__82 __pyx_mstate_global->__pyx_codeobj__82
#define __pyx_codeobj__83 __pyx_mstate_global->__pyx_codeobj__83
#define __pyx_codeobj__84 __pyx_mstate_global->__pyx_codeobj__84
#define __pyx_codeobj__85 __pyx_mstate_global->__pyx_codeobj__85
#define __pyx_codeobj__87 __pyx_mstate_global->__pyx_codeobj__87
#define __pyx_codeobj__88 __pyx_mstate_global->__pyx_codeobj__88
#define __pyx_codeobj__89 __pyx_mstate_global->__pyx_codeobj__89
#define __pyx_codeobj__90 __pyx_mstate_global->__pyx_codeobj__90
#define __pyx_codeobj__91 __pyx_mstate_global->__pyx_codeobj__91
#define __pyx_codeobj__93 __pyx_mstate_global->__pyx_codeobj__93
#define __pyx_codeobj__95 __pyx_mstate_global->__pyx_codeobj__95
#define __pyx_codeobj__96 __pyx_mstate_global->__pyx_codeobj__96
#define __pyx_codeobj__97 __pyx_mstate_global->__pyx_codeobj__97
#define __pyx_codeobj__98 __pyx_mstate_global->__pyx_codeobj__98
#define __pyx_codeobj__99 __pyx_mstate_global->__pyx_codeobj__99
#define __pyx_codeobj__100 __pyx_mstate_global->__pyx_codeobj__100
#define __pyx_codeobj__101 __pyx_mstate_global->__pyx_codeobj__101
#define __pyx_codeobj__102 __pyx_mstate_global->__pyx_codeobj__102
#define __pyx_codeobj__103 __pyx_mstate_global->__pyx_codeobj__103
#define __pyx_codeobj__104 __pyx_mstate_global->__pyx_codeobj__104
#define __pyx_codeobj__105 __pyx_mstate_global->__pyx_codeobj__105
#define __pyx_codeobj__106 __pyx_mstate_global->__pyx_codeobj__106
#define __pyx_codeobj__107 __pyx_mstate_global->__pyx_codeobj__107
#define __pyx_codeobj__108 __pyx_mstate_global->__pyx_codeobj__108
#define __pyx_codeobj__109 __pyx_mstate_global->__pyx_codeobj__109
#define __pyx_codeobj__110 __pyx_mstate_global->__pyx_codeobj__110
#define __pyx_codeobj__111 __pyx_mstate_global->__pyx_codeobj__111
#define __pyx_codeobj__112 __pyx_mstate_global->__pyx_codeobj__112
#define __pyx_codeobj__113 __pyx_mstate_global->__pyx_codeobj__113
#define __pyx_codeobj__114 __pyx_mstate_global->__pyx_codeobj__114
#define __pyx_codeobj__115 __pyx_mstate_global->__pyx_codeobj__115
#define __pyx_codeobj__116 __pyx_mstate_global->__pyx_codeobj__116
#define __pyx_codeobj__117 __pyx_mstate_global->__pyx_codeobj__117
#define __pyx_codeobj__118 __pyx_mstate_global->__pyx_codeobj__118
#define __pyx_codeobj__119 __pyx_mstate_global->__pyx_codeobj__119
#define __pyx_codeobj__120 __pyx_mstate_global->__pyx_codeobj__120
#define __pyx_codeobj__121 __pyx_mstate_global->__pyx_codeobj__121
#define __pyx_codeobj__122 __pyx_mstate_global->__pyx_codeobj__122
#define __pyx_codeobj__123 __pyx_mstate_global->__pyx_codeobj__123
#define __pyx_codeobj__124 __pyx_mstate_global->__pyx_codeobj__124
#define __pyx_codeobj__125 __pyx_mstate_global->__pyx_codeobj__125
#define __pyx_codeobj__126 __pyx_mstate_global->__pyx_codeobj__126
#define __pyx_codeobj__127 __pyx_mstate_global->__pyx_codeobj__127
#define __pyx_codeobj__128 __pyx_mstate_global->__pyx_codeobj__128
#define __pyx_codeobj__130 __pyx_mstate_global->__pyx_codeobj__130
#define __pyx_codeobj__132 __pyx_mstate_global->__pyx_codeobj__132
#define __pyx_codeobj__134 __pyx_mstate_global->__pyx_codeobj__134
#define __pyx_codeobj__135 __pyx_mstate_global->__pyx_codeobj__135
#define __pyx_codeobj__136 __pyx_mstate_global->__pyx_codeobj__136
#define __pyx_codeobj__137 __pyx_mstate_global->__pyx_codeobj__137
#define __pyx_codeobj__138 __pyx_mstate_global->__pyx_codeobj__138
#define __pyx_codeobj__139 __pyx_mstate_global->__pyx_codeobj__139
#define __pyx_codeobj__140 __pyx_mstate_global->__pyx_codeobj__140
#define __pyx_codeobj__141 __pyx_mstate_global->__pyx_codeobj__141
#define __pyx_codeobj__142 __pyx_mstate_global->__pyx_codeobj__142
#define __pyx_codeobj__143 __pyx_mstate_global->__pyx_codeobj__143
#define __pyx_codeobj__144 __pyx_mstate_global->__pyx_codeobj__144
#define __pyx_codeobj__145 __pyx_mstate_global->__pyx_codeobj__145
#define __pyx_codeobj__146 __pyx_mstate_global->__pyx_codeobj__146
#define __pyx_codeobj__147 __pyx_mstate_global->__pyx_codeobj__147
#define __pyx_codeobj__148 __pyx_mstate_global->__pyx_codeobj__148
#define __pyx_codeobj__149 __pyx_mstate_global->__pyx_codeobj__149
#define __pyx_codeobj__150 __pyx_mstate_global->__pyx_codeobj__150
#define __pyx_codeobj__151 __pyx_mstate_global->__pyx_codeobj__151
#define __pyx_codeobj__152 __pyx_mstate_global->__pyx_codeobj__152
#define __pyx_codeobj__153 __pyx_mstate_global->__pyx_codeobj__153
#define __pyx_codeobj__154 __pyx_mstate_global->__pyx_codeobj__154
#define __pyx_codeobj__155 __pyx_mstate_global->__pyx_codeobj__155
#define __pyx_codeobj__157 __pyx_mstate_global->__pyx_codeobj__157
#define __pyx_codeobj__158 __pyx_mstate_global->__pyx_codeobj__158
#define __pyx_codeobj__159 __pyx_mstate_global->__pyx_codeobj__159
#define __pyx_codeobj__160 __pyx_mstate_global->__pyx_codeobj__160
#define __pyx_codeobj__161 __pyx_mstate_global->__pyx_codeobj__161
#define __pyx_codeobj__162 __pyx_mstate_global->__pyx_codeobj__162
#define __pyx_codeobj__163 __pyx_mstate_global->__pyx_codeobj__163
#define __pyx_codeobj__164 __pyx_mstate_global->__pyx_codeobj__164
#define __pyx_codeobj__165 __pyx_mstate_global->__pyx_codeobj__165
#define __pyx_codeobj__166 __pyx_mstate_global->__pyx_codeobj__166
#define __pyx_codeobj__167 __pyx_mstate_global->__pyx_codeobj__167
#define __pyx_codeobj__168 __pyx_mstate_global->__pyx_codeobj__168
#define __pyx_codeobj__169 __pyx_mstate_global->__pyx_codeobj__169
#define __pyx_codeobj__170 __pyx_mstate_global->__pyx_codeobj__170
#define __pyx_codeobj__171 __pyx_mstate_global->__pyx_codeobj__171
#define __pyx_codeobj__172 __pyx_mstate_global->__pyx_codeobj__172
#define __pyx_codeobj__173 __pyx_mstate_global->__pyx_codeobj__173
#define __pyx_codeobj__174 __pyx_mstate_global->__pyx_codeobj__174
#define __pyx_codeobj__175 __pyx_mstate_global->__pyx_codeobj__175
#define __pyx_codeobj__176 __pyx_mstate_global->__pyx_codeobj__176
#define __pyx_codeobj__177 __pyx_mstate_global->__pyx_codeobj__177
#define __pyx_codeobj__178 __pyx_mstate_global->__pyx_codeobj__178
#define __pyx_codeobj__179 __pyx_mstate_global->__pyx_codeobj__179
#define __pyx_codeobj__180 __pyx_mstate_global->__pyx_codeobj__180
#define __pyx_codeobj__181 __pyx_mstate_global->__pyx_codeobj__181
#define __pyx_codeobj__182 __pyx_mstate_global->__pyx_codeobj__182
#define __pyx_codeobj__183 __pyx_mstate_global->__pyx_codeobj__183
#define __pyx_codeobj__184 __pyx_mstate_global->__pyx_codeobj__184
#define __pyx_codeobj__185 __pyx_mstate_global->__pyx_codeobj__185
#define __pyx_codeobj__186 __pyx_mstate_global->__pyx_codeobj__186
#define __pyx_codeobj__187 __pyx_mstate_global->__pyx_codeobj__187
#define __pyx_codeobj__188 __pyx_mstate_global->__pyx_codeobj__188
#define __pyx_codeobj__189 __pyx_mstate_global->__pyx_codeobj__189
#define __pyx_codeobj__190 __pyx_mstate_global->__pyx_codeobj__190
#define __pyx_codeobj__191 __pyx_mstate_global->__pyx_codeobj__191
#define __pyx_codeobj__192 __pyx_mstate_global->__pyx_codeobj__192
#define __pyx_codeobj__193 __pyx_mstate_global->__pyx_codeobj__193
#define __pyx_codeobj__195 __pyx_mstate_global->__pyx_codeobj__195
#define __pyx_codeobj__197 __pyx_mstate_global->__pyx_codeobj__197
#define __pyx_codeobj__199 __pyx_mstate_global->__pyx_codeobj__199
#define __pyx_codeobj__202 __pyx_mstate_global->__pyx_codeobj__202
#define __pyx_codeobj__204 __pyx_mstate_global->__pyx_codeobj__204
#define __pyx_codeobj__205 __pyx_mstate_global->__pyx_codeobj__205
#define __pyx_codeobj__206 __pyx_mstate_global->__pyx_codeobj__206
#define __pyx_codeobj__208 __pyx_mstate_global->__pyx_codeobj__208
#define __pyx_codeobj__209 __pyx_mstate_global->__pyx_codeobj__209
#define __pyx_codeobj__210 __pyx_mstate_global->__pyx_codeobj__210
#define __pyx_codeobj__212 __pyx_mstate_global->__pyx_codeobj__212
#define __pyx_codeobj__213 __pyx_mstate_global->__pyx_codeobj__213
#define __pyx_codeobj__215 __pyx_mstate_global->__pyx_codeobj__215
#define __pyx_codeobj__216 __pyx_mstate_global->__pyx_codeobj__216
#define __pyx_codeobj__217 __pyx_mstate_global->__pyx_codeobj__217
#define __pyx_codeobj__219 __pyx_mstate_global->__pyx_codeobj__219
#define __pyx_codeobj__222 __pyx_mstate_global->__pyx_codeobj__222
#define __pyx_codeobj__224 __pyx_mstate_global->__pyx_codeobj__224
#define __pyx_codeobj__225 __pyx_mstate_global->__pyx_codeobj__225
#define __pyx_codeobj__226 __pyx_mstate_global->__pyx_codeobj__226
#define __pyx_codeobj__227 __pyx_mstate_global->__pyx_codeobj__227
#define __pyx_codeobj__229 __pyx_mstate_global->__pyx_codeobj__229
#define __pyx_codeobj__230 __pyx_mstate_global->__pyx_codeobj__230
#define __pyx_codeobj__231 __pyx_mstate_global->__pyx_codeobj__231
#define __pyx_codeobj__232 __pyx_mstate_global->__pyx_codeobj__232
#define __pyx_codeobj__234 __pyx_mstate_global->__pyx_codeobj__234
#define __pyx_codeobj__237 __pyx_mstate_global->__pyx_codeobj__237
#define __pyx_codeobj__239 __pyx_mstate_global->__pyx_codeobj__239
#define __pyx_codeobj__240 __pyx_mstate_global->__pyx_codeobj__240
#define __pyx_codeobj__241 __pyx_mstate_global->__pyx_codeobj__241
#define __pyx_codeobj__242 __pyx_mstate_global->__pyx_codeobj__242
#define __pyx_codeobj__243 __pyx_mstate_global->__pyx_codeobj__243
#define __pyx_codeobj__244 __pyx_mstate_global->__pyx_codeobj__244
#define __pyx_codeobj__245 __pyx_mstate_global->__pyx_codeobj__245
#define __pyx_codeobj__246 __pyx_mstate_global->__pyx_codeobj__246
#define __pyx_codeobj__247 __pyx_mstate_global->__pyx_codeobj__247
#define __pyx_codeobj__248 __pyx_mstate_global->__pyx_codeobj__248
#define __pyx_codeobj__249 __pyx_mstate_global->__pyx_codeobj__249
#define __pyx_codeobj__251 __pyx_mstate_global->__pyx_codeobj__251
#define __pyx_codeobj__253 __pyx_mstate_global->__pyx_codeobj__253
#define __pyx_codeobj__254 __pyx_mstate_global->__pyx_codeobj__254
#define __pyx_codeobj__255 __pyx_mstate_global->__pyx_codeobj__255
#define __pyx_codeobj__256 __pyx_mstate_global->__pyx_codeobj__256
#define __pyx_codeobj__257 __pyx_mstate_global->__pyx_codeobj__257
#define __pyx_codeobj__259 __pyx_mstate_global->__pyx_codeobj__259
#define __pyx_codeobj__260 __pyx_mstate_global->__pyx_codeobj__260
#define __pyx_codeobj__261 __pyx_mstate_global->__pyx_codeobj__261
#define __pyx_codeobj__263 __pyx_mstate_global->__pyx_codeobj__263
#define __pyx_codeobj__265 __pyx_mstate_global->__pyx_codeobj__265
#define __pyx_codeobj__267 __pyx_mstate_global->__pyx_codeobj__267
#define __pyx_codeobj__269 __pyx_mstate_global->__pyx_codeobj__269
#define __pyx_codeobj__271 __pyx_mstate_global->__pyx_codeobj__271
#define __pyx_codeobj__273 __pyx_mstate_global->__pyx_codeobj__273
#define __pyx_codeobj__274 __pyx_mstate_global->__pyx_codeobj__274
#define __pyx_codeobj__276 __pyx_mstate_global->__pyx_codeobj__276
#define __pyx_codeobj__279 __pyx_mstate_global->__pyx_codeobj__279
#define __pyx_codeobj__281 __pyx_mstate_global->__pyx_codeobj__281
#define __pyx_codeobj__283 __pyx_mstate_global->__pyx_codeobj__283
#define __pyx_codeobj__286 __pyx_mstate_global->__pyx_codeobj__286
#define __pyx_codeobj__289 __pyx_mstate_global->__pyx_codeobj__289
#define __pyx_codeobj__291 __pyx_mstate_global->__pyx_codeobj__291
#define __pyx_codeobj__292 __pyx_mstate_global->__pyx_codeobj__292
#define __pyx_codeobj__293 __pyx_mstate_global->__pyx_codeobj__293
#define __pyx_codeobj__295 __pyx_mstate_global->__pyx_codeobj__295
#define __pyx_codeobj__296 __pyx_mstate_global->__pyx_codeobj__296
#define __pyx_codeobj__297 __pyx_mstate_global->__pyx_codeobj__297
#define __pyx_codeobj__298 __pyx_mstate_global->__pyx_codeobj__298
#define __pyx_codeobj__300 __pyx_mstate_global->__pyx_codeobj__300
#define __pyx_codeobj__302 __pyx_mstate_global->__pyx_codeobj__302
#define __pyx_codeobj__303 __pyx_mstate_global->__pyx_codeobj__303
#define __pyx_codeobj__304 __pyx_mstate_global->__pyx_codeobj__304
#define __pyx_codeobj__306 __pyx_mstate_global->__pyx_codeobj__306
#define __pyx_codeobj__307 __pyx_mstate_global->__pyx_codeobj__307
#define __pyx_codeobj__308 __pyx_mstate_global->__pyx_codeobj__308
#define __pyx_codeobj__310 __pyx_mstate_global->__pyx_codeobj__310
#define __pyx_codeobj__311 __pyx_mstate_global->__pyx_codeobj__311
#define __pyx_codeobj__312 __pyx_mstate_global->__pyx_codeobj__312
#define __pyx_codeobj__313 __pyx_mstate_global->__pyx_codeobj__313
#define __pyx_codeobj__314 __pyx_mstate_global->__pyx_codeobj__314
#define __pyx_codeobj__316 __pyx_mstate_global->__pyx_codeobj__316
#define __pyx_codeobj__317 __pyx_mstate_global->__pyx_codeobj__317
#define __pyx_codeobj__318 __pyx_mstate_global->__pyx_codeobj__318
#define __pyx_codeobj__319 __pyx_mstate_global->__pyx_codeobj__319
#define __pyx_codeobj__320 __pyx_mstate_global->__pyx_codeobj__320
#define __pyx_codeobj__321 __pyx_mstate_global->__pyx_codeobj__321
#define __pyx_codeobj__322 __pyx_mstate_global->__pyx_codeobj__322
#define __pyx_codeobj__323 __pyx_mstate_global->__pyx_codeobj__323
#define __pyx_codeobj__325 __pyx_mstate_global->__pyx_codeobj__325
#define __pyx_codeobj__326 __pyx_mstate_global->__pyx_codeobj__326
#define __pyx_codeobj__327 __pyx_mstate_global->__pyx_codeobj__327
#define __pyx_codeobj__328 __pyx_mstate_global->__pyx_codeobj__328
#define __pyx_codeobj__330 __pyx_mstate_global->__pyx_codeobj__330
#define __pyx_codeobj__331 __pyx_mstate_global->__pyx_codeobj__331
#define __pyx_codeobj__332 __pyx_mstate_global->__pyx_codeobj__332
#define __pyx_codeobj__333 __pyx_mstate_global->__pyx_codeobj__333
#define __pyx_codeobj__334 __pyx_mstate_global->__pyx_codeobj__334
#define __pyx_codeobj__335 __pyx_mstate_global->__pyx_codeobj__335
#define __pyx_codeobj__336 __pyx_mstate_global->__pyx_codeobj__336
#define __pyx_codeobj__337 __pyx_mstate_global->__pyx_codeobj__337
#define __pyx_codeobj__338 __pyx_mstate_global->__pyx_codeobj__338
#define __pyx_codeobj__339 __pyx_mstate_global->__pyx_codeobj__339
#define __pyx_codeobj__340 __pyx_mstate_global->__pyx_codeobj__340
#define __pyx_codeobj__341 __pyx_mstate_global->__pyx_codeobj__341
#define __pyx_codeobj__342 __pyx_mstate_global->__pyx_codeobj__342
#define __pyx_codeobj__343 __pyx_mstate_global->__pyx_codeobj__343
#define __pyx_codeobj__345 __pyx_mstate_global->__pyx_codeobj__345
#define __pyx_codeobj__346 __pyx_mstate_global->__pyx_codeobj__346
#define __pyx_codeobj__347 __pyx_mstate_global->__pyx_codeobj__347
#define __pyx_codeobj__348 __pyx_mstate_global->__pyx_codeobj__348
#define __pyx_codeobj__349 __pyx_mstate_global->__pyx_codeobj__349
#define __pyx_codeobj__350 __pyx_mstate_global->__pyx_codeobj__350
#define __pyx_codeobj__351 __pyx_mstate_global->__pyx_codeobj__351
#define __pyx_codeobj__352 __pyx_mstate_global->__pyx_codeobj__352
#define __pyx_codeobj__353 __pyx_mstate_global->__pyx_codeobj__353
#define __pyx_codeobj__354 __pyx_mstate_global->__pyx_codeobj__354
#define __pyx_codeobj__356 __pyx_mstate_global->__pyx_codeobj__356
#define __pyx_codeobj__358 __pyx_mstate_global->__pyx_codeobj__358
#define __pyx_codeobj__359 __pyx_mstate_global->__pyx_codeobj__359
#define __pyx_codeobj__360 __pyx_mstate_global->__pyx_codeobj__360
#define __pyx_codeobj__361 __pyx_mstate_global->__pyx_codeobj__361
#define __pyx_codeobj__363 __pyx_mstate_global->__pyx_codeobj__363
#define __pyx_codeobj__366 __pyx_mstate_global->__pyx_codeobj__366
#define __pyx_codeobj__367 __pyx_mstate_global->__pyx_codeobj__367
#define __pyx_codeobj__368 __pyx_mstate_global->__pyx_codeobj__368
#define __pyx_codeobj__369 __pyx_mstate_global->__pyx_codeobj__369
#define __pyx_codeobj__370 __pyx_mstate_global->__pyx_codeobj__370
#define __pyx_codeobj__371 __pyx_mstate_global->__pyx_codeobj__371
#define __pyx_codeobj__372 __pyx_mstate_global->__pyx_codeobj__372
#define __pyx_codeobj__373 __pyx_mstate_global->__pyx_codeobj__373
#define __pyx_codeobj__374 __pyx_mstate_global->__pyx_codeobj__374
#define __pyx_codeobj__375 __pyx_mstate_global->__pyx_codeobj__375
#define __pyx_codeobj__376 __pyx_mstate_global->__pyx_codeobj__376
#define __pyx_codeobj__377 __pyx_mstate_global->__pyx_codeobj__377
#define __pyx_codeobj__378 __pyx_mstate_global->__pyx_codeobj__378
#define __pyx_codeobj__379 __pyx_mstate_global->__pyx_codeobj__379
#define __pyx_codeobj__380 __pyx_mstate_global->__pyx_codeobj__380
#define __pyx_codeobj__381 __pyx_mstate_global->__pyx_codeobj__381
#define __pyx_codeobj__382 __pyx_mstate_global->__pyx_codeobj__382
#define __pyx_codeobj__384 __pyx_mstate_global->__pyx_codeobj__384
#define __pyx_codeobj__386 __pyx_mstate_global->__pyx_codeobj__386
#define __pyx_codeobj__387 __pyx_mstate_global->__pyx_codeobj__387
#define __pyx_codeobj__388 __pyx_mstate_global->__pyx_codeobj__388
#define __pyx_codeobj__389 __pyx_mstate_global->__pyx_codeobj__389
#define __pyx_codeobj__390 __pyx_mstate_global->__pyx_codeobj__390
#define __pyx_codeobj__391 __pyx_mstate_global->__pyx_codeobj__391
#define __pyx_codeobj__392 __pyx_mstate_global->__pyx_codeobj__392
#define __pyx_codeobj__393 __pyx_mstate_global->__pyx_codeobj__393
#define __pyx_codeobj__394 __pyx_mstate_global->__pyx_codeobj__394
#define __pyx_codeobj__395 __pyx_mstate_global->__pyx_codeobj__395
#define __pyx_codeobj__396 __pyx_mstate_global->__pyx_codeobj__396
#define __pyx_codeobj__397 __pyx_mstate_global->__pyx_codeobj__397
#define __pyx_codeobj__398 __pyx_mstate_global->__pyx_codeobj__398
#define __pyx_codeobj__399 __pyx_mstate_global->__pyx_codeobj__399
#define __pyx_codeobj__400 __pyx_mstate_global->__pyx_codeobj__400
#define __pyx_codeobj__401 __pyx_mstate_global->__pyx_codeobj__401
#define __pyx_codeobj__402 __pyx_mstate_global->__pyx_codeobj__402
#define __pyx_codeobj__403 __pyx_mstate_global->__pyx_codeobj__403
#define __pyx_codeobj__404 __pyx_mstate_global->__pyx_codeobj__404
#define __pyx_codeobj__405 __pyx_mstate_global->__pyx_codeobj__405
#define __pyx_codeobj__406 __pyx_mstate_global->__pyx_codeobj__406
#define __pyx_codeobj__407 __pyx_mstate_global->__pyx_codeobj__407
#define __pyx_codeobj__408 __pyx_mstate_global->__pyx_codeobj__408
#define __pyx_codeobj__409 __pyx_mstate_global->__pyx_codeobj__409
#define __pyx_codeobj__410 __pyx_mstate_global->__pyx_codeobj__410
#define __pyx_codeobj__411 __pyx_mstate_global->__pyx_codeobj__411
#define __pyx_codeobj__412 __pyx_mstate_global->__pyx_codeobj__412
#define __pyx_codeobj__413 __pyx_mstate_global->__pyx_codeobj__413
#define __pyx_codeobj__414 __pyx_mstate_global->__pyx_codeobj__414
#define __pyx_codeobj__415 __pyx_mstate_global->__pyx_codeobj__415
#define __pyx_codeobj__416 __pyx_mstate_global->__pyx_codeobj__416
#define __pyx_codeobj__417 __pyx_mstate_global->__pyx_codeobj__417
#define __pyx_codeobj__418 __pyx_mstate_global->__pyx_codeobj__418
#define __pyx_codeobj__419 __pyx_mstate_global->__pyx_codeobj__419
#define __pyx_codeobj__420 __pyx_mstate_global->__pyx_codeobj__420
#define __pyx_codeobj__421 __pyx_mstate_global->__pyx_codeobj__421
#define __pyx_codeobj__422 __pyx_mstate_global->__pyx_codeobj__422
#define __pyx_codeobj__423 __pyx_mstate_global->__pyx_codeobj__423
#define __pyx_codeobj__424 __pyx_mstate_global->__pyx_codeobj__424
#define __pyx_codeobj__425 __pyx_mstate_global->__pyx_codeobj__425
#define __pyx_codeobj__426 __pyx_mstate_global->__pyx_codeobj__426
#define __pyx_codeobj__427 __pyx_mstate_global->__pyx_codeobj__427
#define __pyx_codeobj__428 __pyx_mstate_global->__pyx_codeobj__428
#define __pyx_codeobj__429 __pyx_mstate_global->__pyx_codeobj__429
#define __pyx_codeobj__430 __pyx_mstate_global->__pyx_codeobj__430
#define __pyx_codeobj__431 __pyx_mstate_global->__pyx_codeobj__431
#define __pyx_codeobj__432 __pyx_mstate_global->__pyx_codeobj__432
#define __pyx_codeobj__433 __pyx_mstate_global->__pyx_codeobj__433
#define __pyx_codeobj__434 __pyx_mstate_global->__pyx_codeobj__434
#define __pyx_codeobj__435 __pyx_mstate_global->__pyx_codeobj__435
#define __pyx_codeobj__436 __pyx_mstate_global->__pyx_codeobj__436
#define __pyx_codeobj__437 __pyx_mstate_global->__pyx_codeobj__437
#define __pyx_codeobj__438 __pyx_mstate_global->__pyx_codeobj__438
#define __pyx_codeobj__439 __pyx_mstate_global->__pyx_codeobj__439
#define __pyx_codeobj__440 __pyx_mstate_global->__pyx_codeobj__440
#define __pyx_codeobj__441 __pyx_mstate_global->__pyx_codeobj__441
#define __pyx_codeobj__442 __pyx_mstate_global->__pyx_codeobj__442
#define __pyx_codeobj__443 __pyx_mstate_global->__pyx_codeobj__443
#define __pyx_codeobj__444 __pyx_mstate_global->__pyx_codeobj__444
#define __pyx_codeobj__445 __pyx_mstate_global->__pyx_codeobj__445
#define __pyx_codeobj__446 __pyx_mstate_global->__pyx_codeobj__446
#define __pyx_codeobj__447 __pyx_mstate_global->__pyx_codeobj__447
#define __pyx_codeobj__448 __pyx_mstate_global->__pyx_codeobj__448
#define __pyx_codeobj__449 __pyx_mstate_global->__pyx_codeobj__449
#define __pyx_codeobj__450 __pyx_mstate_global->__pyx_codeobj__450
#define __pyx_codeobj__451 __pyx_mstate_global->__pyx_codeobj__451
#define __pyx_codeobj__452 __pyx_mstate_global->__pyx_codeobj__452
#define __pyx_codeobj__453 __pyx_mstate_global->__pyx_codeobj__453
#define __pyx_codeobj__454 __pyx_mstate_global->__pyx_codeobj__454
#define __pyx_codeobj__455 __pyx_mstate_global->__pyx_codeobj__455
#define __pyx_codeobj__456 __pyx_mstate_global->__pyx_codeobj__456
#define __pyx_codeobj__457 __pyx_mstate_global->__pyx_codeobj__457
#define __pyx_codeobj__458 __pyx_mstate_global->__pyx_codeobj__458
#define __pyx_codeobj__459 __pyx_mstate_global->__pyx_codeobj__459
#define __pyx_codeobj__460 __pyx_mstate_global->__pyx_codeobj__460
#define __pyx_codeobj__461 __pyx_mstate_global->__pyx_codeobj__461
#define __pyx_codeobj__462 __pyx_mstate_global->__pyx_codeobj__462
#define __pyx_codeobj__463 __pyx_mstate_global->__pyx_codeobj__463
#define __pyx_codeobj__464 __pyx_mstate_global->__pyx_codeobj__464
#define __pyx_codeobj__465 __pyx_mstate_global->__pyx_codeobj__465
#define __pyx_codeobj__466 __pyx_mstate_global->__pyx_codeobj__466
#define __pyx_codeobj__467 __pyx_mstate_global->__pyx_codeobj__467
#define __pyx_codeobj__468 __pyx_mstate_global->__pyx_codeobj__468
#define __pyx_codeobj__469 __pyx_mstate_global->__pyx_codeobj__469
#define __pyx_codeobj__470 __pyx_mstate_global->__pyx_codeobj__470
#define __pyx_codeobj__471 __pyx_mstate_global->__pyx_codeobj__471
#define __pyx_codeobj__472 __pyx_mstate_global->__pyx_codeobj__472
#define __pyx_codeobj__473 __pyx_mstate_global->__pyx_codeobj__473
#define __pyx_codeobj__474 __pyx_mstate_global->__pyx_codeobj__474
#define __pyx_codeobj__475 __pyx_mstate_global->__pyx_codeobj__475
#define __pyx_codeobj__476 __pyx_mstate_global->__pyx_codeobj__476
#define __pyx_codeobj__477 __pyx_mstate_global->__pyx_codeobj__477
#define __pyx_codeobj__478 __pyx_mstate_global->__pyx_codeobj__478
#define __pyx_codeobj__479 __pyx_mstate_global->__pyx_codeobj__479
#define __pyx_codeobj__480 __pyx_mstate_global->__pyx_codeobj__480
#define __pyx_codeobj__481 __pyx_mstate_global->__pyx_codeobj__481
#define __pyx_codeobj__482 __pyx_mstate_global->__pyx_codeobj__482
#define __pyx_codeobj__483 __pyx_mstate_global->__pyx_codeobj__483
#define __pyx_codeobj__484 __pyx_mstate_global->__pyx_codeobj__484
#define __pyx_codeobj__485 __pyx_mstate_global->__pyx_codeobj__485
#define __pyx_codeobj__486 __pyx_mstate_global->__pyx_codeobj__486
#define __pyx_codeobj__487 __pyx_mstate_global->__pyx_codeobj__487
#define __pyx_codeobj__488 __pyx_mstate_global->__pyx_codeobj__488
#define __pyx_codeobj__489 __pyx_mstate_global->__pyx_codeobj__489
#define __pyx_codeobj__490 __pyx_mstate_global->__pyx_codeobj__490
#define __pyx_codeobj__491 __pyx_mstate_global->__pyx_codeobj__491
#define __pyx_codeobj__492 __pyx_mstate_global->__pyx_codeobj__492
#define __pyx_codeobj__494 __pyx_mstate_global->__pyx_codeobj__494
#define __pyx_codeobj__496 __pyx_mstate_global->__pyx_codeobj__496
#define __pyx_codeobj__497 __pyx_mstate_global->__pyx_codeobj__497
#define __pyx_codeobj__498 __pyx_mstate_global->__pyx_codeobj__498
#define __pyx_codeobj__499 __pyx_mstate_global->__pyx_codeobj__499
#define __pyx_codeobj__501 __pyx_mstate_global->__pyx_codeobj__501
#define __pyx_codeobj__502 __pyx_mstate_global->__pyx_codeobj__502
#define __pyx_codeobj__503 __pyx_mstate_global->__pyx_codeobj__503
#define __pyx_codeobj__504 __pyx_mstate_global->__pyx_codeobj__504
#define __pyx_codeobj__505 __pyx_mstate_global->__pyx_codeobj__505
#define __pyx_codeobj__506 __pyx_mstate_global->__pyx_codeobj__506
#define __pyx_codeobj__507 __pyx_mstate_global->__pyx_codeobj__507
#define __pyx_codeobj__508 __pyx_mstate_global->__pyx_codeobj__508
#define __pyx_codeobj__509 __pyx_mstate_global->__pyx_codeobj__509
#define __pyx_codeobj__510 __pyx_mstate_global->__pyx_codeobj__510
#define __pyx_codeobj__511 __pyx_mstate_global->__pyx_codeobj__511
#define __pyx_codeobj__512 __pyx_mstate_global->__pyx_codeobj__512
#define __pyx_codeobj__513 __pyx_mstate_global->__pyx_codeobj__513
#define __pyx_codeobj__514 __pyx_mstate_global->__pyx_codeobj__514
#define __pyx_codeobj__515 __pyx_mstate_global->__pyx_codeobj__515
#define __pyx_codeobj__516 __pyx_mstate_global->__pyx_codeobj__516
#define __pyx_codeobj__517 __pyx_mstate_global->__pyx_codeobj__517
#define __pyx_codeobj__518 __pyx_mstate_global->__pyx_codeobj__518
#define __pyx_codeobj__519 __pyx_mstate_global->__pyx_codeobj__519
#define __pyx_codeobj__520 __pyx_mstate_global->__pyx_codeobj__520
#define __pyx_codeobj__521 __pyx_mstate_global->__pyx_codeobj__521
#define __pyx_codeobj__522 __pyx_mstate_global->__pyx_codeobj__522
#define __pyx_codeobj__523 __pyx_mstate_global->__pyx_codeobj__523
#define __pyx_codeobj__524 __pyx_mstate_global->__pyx_codeobj__524
#define __pyx_codeobj__525 __pyx_mstate_global->__pyx_codeobj__525
#define __pyx_codeobj__526 __pyx_mstate_global->__pyx_codeobj__526
#define __pyx_codeobj__527 __pyx_mstate_global->__pyx_codeobj__527
#define __pyx_codeobj__528 __pyx_mstate_global->__pyx_codeobj__528
#define __pyx_codeobj__529 __pyx_mstate_global->__pyx_codeobj__529
#define __pyx_codeobj__530 __pyx_mstate_global->__pyx_codeobj__530
#define __pyx_codeobj__531 __pyx_mstate_global->__pyx_codeobj__531
#define __pyx_codeobj__532 __pyx_mstate_global->__pyx_codeobj__532
#define __pyx_codeobj__533 __pyx_mstate_global->__pyx_codeobj__533
#define __pyx_codeobj__534 __pyx_mstate_global->__pyx_codeobj__534
#define __pyx_codeobj__535 __pyx_mstate_global->__pyx_codeobj__535
#define __pyx_codeobj__537 __pyx_mstate_global->__pyx_codeobj__537
#define __pyx_codeobj__539 __pyx_mstate_global->__pyx_codeobj__539
#define __pyx_codeobj__541 __pyx_mstate_global->__pyx_codeobj__541
#define __pyx_codeobj__543 __pyx_mstate_global->__pyx_codeobj__543
#define __pyx_codeobj__544 __pyx_mstate_global->__pyx_codeobj__544
#define __pyx_codeobj__545 __pyx_mstate_global->__pyx_codeobj__545
#define __pyx_codeobj__546 __pyx_mstate_global->__pyx_codeobj__546
#define __pyx_codeobj__547 __pyx_mstate_global->__pyx_codeobj__547
#define __pyx_codeobj__548 __pyx_mstate_global->__pyx_codeobj__548
#define __pyx_codeobj__550 __pyx_mstate_global->__pyx_codeobj__550
#define __pyx_codeobj__552 __pyx_mstate_global->__pyx_codeobj__552
#define __pyx_codeobj__553 __pyx_mstate_global->__pyx_codeobj__553
#define __pyx_codeobj__555 __pyx_mstate_global->__pyx_codeobj__555
#define __pyx_codeobj__557 __pyx_mstate_global->__pyx_codeobj__557
#define __pyx_codeobj__560 __pyx_mstate_global->__pyx_codeobj__560
#define __pyx_codeobj__561 __pyx_mstate_global->__pyx_codeobj__561
#define __pyx_codeobj__562 __pyx_mstate_global->__pyx_codeobj__562
#define __pyx_codeobj__563 __pyx_mstate_global->__pyx_codeobj__563
#define __pyx_codeobj__564 __pyx_mstate_global->__pyx_codeobj__564
#define __pyx_codeobj__565 __pyx_mstate_global->__pyx_codeobj__565
#define __pyx_codeobj__566 __pyx_mstate_global->__pyx_codeobj__566
#define __pyx_codeobj__567 __pyx_mstate_global->__pyx_codeobj__567
#define __pyx_codeobj__568 __pyx_mstate_global->__pyx_codeobj__568
#define __pyx_codeobj__569 __pyx_mstate_global->__pyx_codeobj__569
#define __pyx_codeobj__570 __pyx_mstate_global->__pyx_codeobj__570
#define __pyx_codeobj__571 __pyx_mstate_global->__pyx_codeobj__571
#define __pyx_codeobj__572 __pyx_mstate_global->__pyx_codeobj__572
#define __pyx_codeobj__573 __pyx_mstate_global->__pyx_codeobj__573
#define __pyx_codeobj__575 __pyx_mstate_global->__pyx_codeobj__575
#define __pyx_codeobj__577 __pyx_mstate_global->__pyx_codeobj__577
#define __pyx_codeobj__578 __pyx_mstate_global->__pyx_codeobj__578
#define __pyx_codeobj__579 __pyx_mstate_global->__pyx_codeobj__579
#define __pyx_codeobj__580 __pyx_mstate_global->__pyx_codeobj__580
#define __pyx_codeobj__582 __pyx_mstate_global->__pyx_codeobj__582
#define __pyx_codeobj__583 __pyx_mstate_global->__pyx_codeobj__583
#define __pyx_codeobj__584 __pyx_mstate_global->__pyx_codeobj__584
#define __pyx_codeobj__585 __pyx_mstate_global->__pyx_codeobj__585
#define __pyx_codeobj__586 __pyx_mstate_global->__pyx_codeobj__586
#define __pyx_codeobj__587 __pyx_mstate_global->__pyx_codeobj__587
#define __pyx_codeobj__588 __pyx_mstate_global->__pyx_codeobj__588
#define __pyx_codeobj__589 __pyx_mstate_global->__pyx_codeobj__589
#define __pyx_codeobj__590 __pyx_mstate_global->__pyx_codeobj__590
#define __pyx_codeobj__591 __pyx_mstate_global->__pyx_codeobj__591
#define __pyx_codeobj__592 __pyx_mstate_global->__pyx_codeobj__592
#define __pyx_codeobj__593 __pyx_mstate_global->__pyx_codeobj__593
#define __pyx_codeobj__595 __pyx_mstate_global->__pyx_codeobj__595
#define __pyx_codeobj__596 __pyx_mstate_global->__pyx_codeobj__596
#define __pyx_codeobj__597 __pyx_mstate_global->__pyx_codeobj__597
#define __pyx_codeobj__598 __pyx_mstate_global->__pyx_codeobj__598
#define __pyx_codeobj__599 __pyx_mstate_global->__pyx_codeobj__599
#define __pyx_codeobj__600 __pyx_mstate_global->__pyx_codeobj__600
#define __pyx_codeobj__601 __pyx_mstate_global->__pyx_codeobj__601
#define __pyx_codeobj__602 __pyx_mstate_global->__pyx_codeobj__602
#define __pyx_codeobj__603 __pyx_mstate_global->__pyx_codeobj__603
#define __pyx_codeobj__604 __pyx_mstate_global->__pyx_codeobj__604
#define __pyx_codeobj__605 __pyx_mstate_global->__pyx_codeobj__605
#define __pyx_codeobj__606 __pyx_mstate_global->__pyx_codeobj__606
#define __pyx_codeobj__607 __pyx_mstate_global->__pyx_codeobj__607
#define __pyx_codeobj__608 __pyx_mstate_global->__pyx_codeobj__608
#define __pyx_codeobj__609 __pyx_mstate_global->__pyx_codeobj__609
#define __pyx_codeobj__610 __pyx_mstate_global->__pyx_codeobj__610
#define __pyx_codeobj__611 __pyx_mstate_global->__pyx_codeobj__611
#define __pyx_codeobj__612 __pyx_mstate_global->__pyx_codeobj__612
#define __pyx_codeobj__613 __pyx_mstate_global->__pyx_codeobj__613
#define __pyx_codeobj__614 __pyx_mstate_global->__pyx_codeobj__614
#define __pyx_codeobj__615 __pyx_mstate_global->__pyx_codeobj__615
#define __pyx_codeobj__616 __pyx_mstate_global->__pyx_codeobj__616
#define __pyx_codeobj__617 __pyx_mstate_global->__pyx_codeobj__617
#define __pyx_codeobj__618 __pyx_mstate_global->__pyx_codeobj__618
#define __pyx_codeobj__619 __pyx_mstate_global->__pyx_codeobj__619
#define __pyx_codeobj__620 __pyx_mstate_global->__pyx_codeobj__620
#define __pyx_codeobj__621 __pyx_mstate_global->__pyx_codeobj__621
#define __pyx_codeobj__622 __pyx_mstate_global->__pyx_codeobj__622
#define __pyx_codeobj__623 __pyx_mstate_global->__pyx_codeobj__623
#define __pyx_codeobj__624 __pyx_mstate_global->__pyx_codeobj__624
#define __pyx_codeobj__625 __pyx_mstate_global->__pyx_codeobj__625
#define __pyx_codeobj__626 __pyx_mstate_global->__pyx_codeobj__626
#define __pyx_codeobj__627 __pyx_mstate_global->__pyx_codeobj__627
#define __pyx_codeobj__628 __pyx_mstate_global->__pyx_codeobj__628
#define __pyx_codeobj__629 __pyx_mstate_global->__pyx_codeobj__629
#define __pyx_codeobj__631 __pyx_mstate_global->__pyx_codeobj__631
#define __pyx_codeobj__633 __pyx_mstate_global->__pyx_codeobj__633
#define __pyx_codeobj__634 __pyx_mstate_global->__pyx_codeobj__634
#define __pyx_codeobj__635 __pyx_mstate_global->__pyx_codeobj__635
#define __pyx_codeobj__636 __pyx_mstate_global->__pyx_codeobj__636
#define __pyx_codeobj__637 __pyx_mstate_global->__pyx_codeobj__637
#define __pyx_codeobj__638 __pyx_mstate_global->__pyx_codeobj__638
#define __pyx_codeobj__639 __pyx_mstate_global->__pyx_codeobj__639
#define __pyx_codeobj__640 __pyx_mstate_global->__pyx_codeobj__640
#define __pyx_codeobj__641 __pyx_mstate_global->__pyx_codeobj__641
#define __pyx_codeobj__642 __pyx_mstate_global->__pyx_codeobj__642
#define __pyx_codeobj__643 __pyx_mstate_global->__pyx_codeobj__643
#define __pyx_codeobj__644 __pyx_mstate_global->__pyx_codeobj__644
#define __pyx_codeobj__645 __pyx_mstate_global->__pyx_codeobj__645
#define __pyx_codeobj__646 __pyx_mstate_global->__pyx_codeobj__646
#define __pyx_codeobj__647 __pyx_mstate_global->__pyx_codeobj__647
#define __pyx_codeobj__648 __pyx_mstate_global->__pyx_codeobj__648
#define __pyx_codeobj__649 __pyx_mstate_global->__pyx_codeobj__649
#define __pyx_codeobj__650 __pyx_mstate_global->__pyx_codeobj__650
#define __pyx_codeobj__651 __pyx_mstate_global->__pyx_codeobj__651
#define __pyx_codeobj__652 __pyx_mstate_global->__pyx_codeobj__652
#define __pyx_codeobj__653 __pyx_mstate_global->__pyx_codeobj__653
#define __pyx_codeobj__654 __pyx_mstate_global->__pyx_codeobj__654
#define __pyx_codeobj__655 __pyx_mstate_global->__pyx_codeobj__655
#define __pyx_codeobj__656 __pyx_mstate_global->__pyx_codeobj__656
#define __pyx_codeobj__657 __pyx_mstate_global->__pyx_codeobj__657
#define __pyx_codeobj__659 __pyx_mstate_global->__pyx_codeobj__659
#define __pyx_codeobj__660 __pyx_mstate_global->__pyx_codeobj__660
#define __pyx_codeobj__661 __pyx_mstate_global->__pyx_codeobj__661
#define __pyx_codeobj__663 __pyx_mstate_global->__pyx_codeobj__663
#define __pyx_codeobj__665 __pyx_mstate_global->__pyx_codeobj__665
#define __pyx_codeobj__666 __pyx_mstate_global->__pyx_codeobj__666
#define __pyx_codeobj__667 __pyx_mstate_global->__pyx_codeobj__667
#define __pyx_codeobj__668 __pyx_mstate_global->__pyx_codeobj__668
#define __pyx_codeobj__669 __pyx_mstate_global->__pyx_codeobj__669
#define __pyx_codeobj__670 __pyx_mstate_global->__pyx_codeobj__670
#define __pyx_codeobj__671 __pyx_mstate_global->__pyx_codeobj__671
#define __pyx_codeobj__672 __pyx_mstate_global->__pyx_codeobj__672
#define __pyx_codeobj__674 __pyx_mstate_global->__pyx_codeobj__674
#define __pyx_codeobj__676 __pyx_mstate_global->__pyx_codeobj__676
#define __pyx_codeobj__679 __pyx_mstate_global->__pyx_codeobj__679
#define __pyx_codeobj__681 __pyx_mstate_global->__pyx_codeobj__681
#define __pyx_codeobj__682 __pyx_mstate_global->__pyx_codeobj__682
#define __pyx_codeobj__683 __pyx_mstate_global->__pyx_codeobj__683
#define __pyx_codeobj__684 __pyx_mstate_global->__pyx_codeobj__684
#define __pyx_codeobj__685 __pyx_mstate_global->__pyx_codeobj__685
#define __pyx_codeobj__686 __pyx_mstate_global->__pyx_codeobj__686
#define __pyx_codeobj__688 __pyx_mstate_global->__pyx_codeobj__688
#define __pyx_codeobj__690 __pyx_mstate_global->__pyx_codeobj__690
#define __pyx_codeobj__691 __pyx_mstate_global->__pyx_codeobj__691
#define __pyx_codeobj__693 __pyx_mstate_global->__pyx_codeobj__693
#define __pyx_codeobj__694 __pyx_mstate_global->__pyx_codeobj__694
#define __pyx_codeobj__695 __pyx_mstate_global->__pyx_codeobj__695
#define __pyx_codeobj__696 __pyx_mstate_global->__pyx_codeobj__696
#define __pyx_codeobj__698 __pyx_mstate_global->__pyx_codeobj__698
#define __pyx_codeobj__700 __pyx_mstate_global->__pyx_codeobj__700
#define __pyx_codeobj__701 __pyx_mstate_global->__pyx_codeobj__701
#define __pyx_codeobj__702 __pyx_mstate_global->__pyx_codeobj__702
#define __pyx_codeobj__703 __pyx_mstate_global->__pyx_codeobj__703
#define __pyx_codeobj__705 __pyx_mstate_global->__pyx_codeobj__705
#define __pyx_codeobj__706 __pyx_mstate_global->__pyx_codeobj__706
#define __pyx_codeobj__707 __pyx_mstate_global->__pyx_codeobj__707
#define __pyx_codeobj__708 __pyx_mstate_global->__pyx_codeobj__708
#define __pyx_codeobj__709 __pyx_mstate_global->__pyx_codeobj__709
#define __pyx_codeobj__710 __pyx_mstate_global->__pyx_codeobj__710
#define __pyx_codeobj__711 __pyx_mstate_global->__pyx_codeobj__711
#define __pyx_codeobj__712 __pyx_mstate_global->__pyx_codeobj__712
#define __pyx_codeobj__713 __pyx_mstate_global->__pyx_codeobj__713
#define __pyx_codeobj__714 __pyx_mstate_global->__pyx_codeobj__714
#define __pyx_codeobj__715 __pyx_mstate_global->__pyx_codeobj__715
#define __pyx_codeobj__716 __pyx_mstate_global->__pyx_codeobj__716
#define __pyx_codeobj__717 __pyx_mstate_global->__pyx_codeobj__717
#define __pyx_codeobj__719 __pyx_mstate_global->__pyx_codeobj__719
#define __pyx_codeobj__720 __pyx_mstate_global->__pyx_codeobj__720
#define __pyx_codeobj__721 __pyx_mstate_global->__pyx_codeobj__721
#define __pyx_codeobj__722 __pyx_mstate_global->__pyx_codeobj__722
#define __pyx_codeobj__723 __pyx_mstate_global->__pyx_codeobj__723
#define __pyx_codeobj__724 __pyx_mstate_global->__pyx_codeobj__724
#define __pyx_codeobj__725 __pyx_mstate_global->__pyx_codeobj__725
#define __pyx_codeobj__726 __pyx_mstate_global->__pyx_codeobj__726
#define __pyx_codeobj__727 __pyx_mstate_global->__pyx_codeobj__727
#define __pyx_codeobj__728 __pyx_mstate_global->__pyx_codeobj__728
#define __pyx_codeobj__729 __pyx_mstate_global->__pyx_codeobj__729
#define __pyx_codeobj__730 __pyx_mstate_global->__pyx_codeobj__730
#define __pyx_codeobj__731 __pyx_mstate_global->__pyx_codeobj__731
#define __pyx_codeobj__732 __pyx_mstate_global->__pyx_codeobj__732
#define __pyx_codeobj__733 __pyx_mstate_global->__pyx_codeobj__733
#define __pyx_codeobj__734 __pyx_mstate_global->__pyx_codeobj__734
#define __pyx_codeobj__735 __pyx_mstate_global->__pyx_codeobj__735
#define __pyx_codeobj__736 __pyx_mstate_global->__pyx_codeobj__736
#define __pyx_codeobj__737 __pyx_mstate_global->__pyx_codeobj__737
#define __pyx_codeobj__738 __pyx_mstate_global->__pyx_codeobj__738
#define __pyx_codeobj__739 __pyx_mstate_global->__pyx_codeobj__739
#define __pyx_codeobj__740 __pyx_mstate_global->__pyx_codeobj__740
#define __pyx_codeobj__741 __pyx_mstate_global->__pyx_codeobj__741
#define __pyx_codeobj__742 __pyx_mstate_global->__pyx_codeobj__742
#define __pyx_codeobj__743 __pyx_mstate_global->__pyx_codeobj__743
#define __pyx_codeobj__744 __pyx_mstate_global->__pyx_codeobj__744
#define __pyx_codeobj__745 __pyx_mstate_global->__pyx_codeobj__745
#define __pyx_codeobj__746 __pyx_mstate_global->__pyx_codeobj__746
#define __pyx_codeobj__747 __pyx_mstate_global->__pyx_codeobj__747
#define __pyx_codeobj__748 __pyx_mstate_global->__pyx_codeobj__748
#define __pyx_codeobj__749 __pyx_mstate_global->__pyx_codeobj__749
#define __pyx_codeobj__750 __pyx_mstate_global->__pyx_codeobj__750
#define __pyx_codeobj__751 __pyx_mstate_global->__pyx_codeobj__751
#define __pyx_codeobj__752 __pyx_mstate_global->__pyx_codeobj__752
#define __pyx_codeobj__753 __pyx_mstate_global->__pyx_codeobj__753
#define __pyx_codeobj__754 __pyx_mstate_global->__pyx_codeobj__754
#define __pyx_codeobj__755 __pyx_mstate_global->__pyx_codeobj__755
#define __pyx_codeobj__756 __pyx_mstate_global->__pyx_codeobj__756
#define __pyx_codeobj__757 __pyx_mstate_global->__pyx_codeobj__757
#define __pyx_codeobj__758 __pyx_mstate_global->__pyx_codeobj__758
#define __pyx_codeobj__759 __pyx_mstate_global->__pyx_codeobj__759
#define __pyx_codeobj__760 __pyx_mstate_global->__pyx_codeobj__760
#define __pyx_codeobj__762 __pyx_mstate_global->__pyx_codeobj__762
#define __pyx_codeobj__764 __pyx_mstate_global->__pyx_codeobj__764
#define __pyx_codeobj__766 __pyx_mstate_global->__pyx_codeobj__766
#define __pyx_codeobj__768 __pyx_mstate_global->__pyx_codeobj__768
#define __pyx_codeobj__770 __pyx_mstate_global->__pyx_codeobj__770
#define __pyx_codeobj__771 __pyx_mstate_global->__pyx_codeobj__771
#define __pyx_codeobj__772 __pyx_mstate_global->__pyx_codeobj__772
#define __pyx_codeobj__773 __pyx_mstate_global->__pyx_codeobj__773
#define __pyx_codeobj__775 __pyx_mstate_global->__pyx_codeobj__775
#define __pyx_codeobj__776 __pyx_mstate_global->__pyx_codeobj__776
#define __pyx_codeobj__777 __pyx_mstate_global->__pyx_codeobj__777
#define __pyx_codeobj__778 __pyx_mstate_global->__pyx_codeobj__778
#define __pyx_codeobj__779 __pyx_mstate_global->__pyx_codeobj__779
#define __pyx_codeobj__780 __pyx_mstate_global->__pyx_codeobj__780
#define __pyx_codeobj__782 __pyx_mstate_global->__pyx_codeobj__782
#define __pyx_codeobj__784 __pyx_mstate_global->__pyx_codeobj__784
#define __pyx_codeobj__787 __pyx_mstate_global->__pyx_codeobj__787
#define __pyx_codeobj__789 __pyx_mstate_global->__pyx_codeobj__789
#define __pyx_codeobj__791 __pyx_mstate_global->__pyx_codeobj__791
#define __pyx_codeobj__793 __pyx_mstate_global->__pyx_codeobj__793
#define __pyx_codeobj__795 __pyx_mstate_global->__pyx_codeobj__795
#define __pyx_codeobj__797 __pyx_mstate_global->__pyx_codeobj__797
#define __pyx_codeobj__798 __pyx_mstate_global->__pyx_codeobj__798
#define __pyx_codeobj__799 __pyx_mstate_global->__pyx_codeobj__799
#define __pyx_codeobj__801 __pyx_mstate_global->__pyx_codeobj__801
#define __pyx_codeobj__802 __pyx_mstate_global->__pyx_codeobj__802
#define __pyx_codeobj__803 __pyx_mstate_global->__pyx_codeobj__803
#define __pyx_codeobj__804 __pyx_mstate_global->__pyx_codeobj__804
#define __pyx_codeobj__806 __pyx_mstate_global->__pyx_codeobj__806
#define __pyx_codeobj__807 __pyx_mstate_global->__pyx_codeobj__807
#define __pyx_codeobj__809 __pyx_mstate_global->__pyx_codeobj__809
#define __pyx_codeobj__810 __pyx_mstate_global->__pyx_codeobj__810
#define __pyx_codeobj__811 __pyx_mstate_global->__pyx_codeobj__811
#define __pyx_codeobj__812 __pyx_mstate_global->__pyx_codeobj__812
#define __pyx_codeobj__813 __pyx_mstate_global->__pyx_codeobj__813
#define __pyx_codeobj__814 __pyx_mstate_global->__pyx_codeobj__814
#define __pyx_codeobj__815 __pyx_mstate_global->__pyx_codeobj__815
#define __pyx_codeobj__816 __pyx_mstate_global->__pyx_codeobj__816
#define __pyx_codeobj__817 __pyx_mstate_global->__pyx_codeobj__817
#define __pyx_codeobj__818 __pyx_mstate_global->__pyx_codeobj__818
#define __pyx_codeobj__819 __pyx_mstate_global->__pyx_codeobj__819
#define __pyx_codeobj__820 __pyx_mstate_global->__pyx_codeobj__820
#define __pyx_codeobj__821 __pyx_mstate_global->__pyx_codeobj__821
#define __pyx_codeobj__822 __pyx_mstate_global->__pyx_codeobj__822
#define __pyx_codeobj__823 __pyx_mstate_global->__pyx_codeobj__823
#define __pyx_codeobj__824 __pyx_mstate_global->__pyx_codeobj__824
#define __pyx_codeobj__825 __pyx_mstate_global->__pyx_codeobj__825
#define __pyx_codeobj__827 __pyx_mstate_global->__pyx_codeobj__827
#define __pyx_codeobj__829 __pyx_mstate_global->__pyx_codeobj__829
#define __pyx_codeobj__830 __pyx_mstate_global->__pyx_codeobj__830
#define __pyx_codeobj__831 __pyx_mstate_global->__pyx_codeobj__831
#define __pyx_codeobj__832 __pyx_mstate_global->__pyx_codeobj__832
#define __pyx_codeobj__833 __pyx_mstate_global->__pyx_codeobj__833
#define __pyx_codeobj__834 __pyx_mstate_global->__pyx_codeobj__834
#define __pyx_codeobj__835 __pyx_mstate_global->__pyx_codeobj__835
#define __pyx_codeobj__836 __pyx_mstate_global->__pyx_codeobj__836
#define __pyx_codeobj__838 __pyx_mstate_global->__pyx_codeobj__838
#define __pyx_codeobj__839 __pyx_mstate_global->__pyx_codeobj__839
#define __pyx_codeobj__840 __pyx_mstate_global->__pyx_codeobj__840
#define __pyx_codeobj__841 __pyx_mstate_global->__pyx_codeobj__841
#define __pyx_codeobj__842 __pyx_mstate_global->__pyx_codeobj__842
#define __pyx_codeobj__843 __pyx_mstate_global->__pyx_codeobj__843
#define __pyx_codeobj__844 __pyx_mstate_global->__pyx_codeobj__844
#define __pyx_codeobj__845 __pyx_mstate_global->__pyx_codeobj__845
#define __pyx_codeobj__846 __pyx_mstate_global->__pyx_codeobj__846
#define __pyx_codeobj__847 __pyx_mstate_global->__pyx_codeobj__847
#define __pyx_codeobj__849 __pyx_mstate_global->__pyx_codeobj__849
#define __pyx_codeobj__850 __pyx_mstate_global->__pyx_codeobj__850
#define __pyx_codeobj__852 __pyx_mstate_global->__pyx_codeobj__852
#define __pyx_codeobj__853 __pyx_mstate_global->__pyx_codeobj__853
#define __pyx_codeobj__854 __pyx_mstate_global->__pyx_codeobj__854
#define __pyx_codeobj__855 __pyx_mstate_global->__pyx_codeobj__855
#define __pyx_codeobj__856 __pyx_mstate_global->__pyx_codeobj__856
#define __pyx_codeobj__857 __pyx_mstate_global->__pyx_codeobj__857
#define __pyx_codeobj__858 __pyx_mstate_global->__pyx_codeobj__858
#define __pyx_codeobj__859 __pyx_mstate_global->__pyx_codeobj__859
#define __pyx_codeobj__860 __pyx_mstate_global->__pyx_codeobj__860
#define __pyx_codeobj__861 __pyx_mstate_global->__pyx_codeobj__861
#define __pyx_codeobj__862 __pyx_mstate_global->__pyx_codeobj__862
#define __pyx_codeobj__863 __pyx_mstate_global->__pyx_codeobj__863
#define __pyx_codeobj__864 __pyx_mstate_global->__pyx_codeobj__864
#define __pyx_codeobj__865 __pyx_mstate_global->__pyx_codeobj__865
#define __pyx_codeobj__866 __pyx_mstate_global->__pyx_codeobj__866
#define __pyx_codeobj__867 __pyx_mstate_global->__pyx_codeobj__867
#define __pyx_codeobj__868 __pyx_mstate_global->__pyx_codeobj__868
#define __pyx_codeobj__869 __pyx_mstate_global->__pyx_codeobj__869
#define __pyx_codeobj__870 __pyx_mstate_global->__pyx_codeobj__870
#define __pyx_codeobj__872 __pyx_mstate_global->__pyx_codeobj__872
#define __pyx_codeobj__873 __pyx_mstate_global->__pyx_codeobj__873
#define __pyx_codeobj__874 __pyx_mstate_global->__pyx_codeobj__874
#define __pyx_codeobj__875 __pyx_mstate_global->__pyx_codeobj__875
#define __pyx_codeobj__876 __pyx_mstate_global->__pyx_codeobj__876
#define __pyx_codeobj__877 __pyx_mstate_global->__pyx_codeobj__877
#define __pyx_codeobj__879 __pyx_mstate_global->__pyx_codeobj__879
#define __pyx_codeobj__881 __pyx_mstate_global->__pyx_codeobj__881
#define __pyx_codeobj__882 __pyx_mstate_global->__pyx_codeobj__882
#define __pyx_codeobj__883 __pyx_mstate_global->__pyx_codeobj__883
#define __pyx_codeobj__884 __pyx_mstate_global->__pyx_codeobj__884
#define __pyx_codeobj__885 __pyx_mstate_global->__pyx_codeobj__885
#define __pyx_codeobj__887 __pyx_mstate_global->__pyx_codeobj__887
#define __pyx_codeobj__888 __pyx_mstate_global->__pyx_codeobj__888
#define __pyx_codeobj__889 __pyx_mstate_global->__pyx_codeobj__889
#define __pyx_codeobj__890 __pyx_mstate_global->__pyx_codeobj__890
#define __pyx_codeobj__891 __pyx_mstate_global->__pyx_codeobj__891
#define __pyx_codeobj__893 __pyx_mstate_global->__pyx_codeobj__893
#define __pyx_codeobj__894 __pyx_mstate_global->__pyx_codeobj__894
#define __pyx_codeobj__895 __pyx_mstate_global->__pyx_codeobj__895
#define __pyx_codeobj__896 __pyx_mstate_global->__pyx_codeobj__896
#define __pyx_codeobj__897 __pyx_mstate_global->__pyx_codeobj__897
#define __pyx_codeobj__898 __pyx_mstate_global->__pyx_codeobj__898
#define __pyx_codeobj__899 __pyx_mstate_global->__pyx_codeobj__899
#define __pyx_codeobj__900 __pyx_mstate_global->__pyx_codeobj__900
#define __pyx_codeobj__901 __pyx_mstate_global->__pyx_codeobj__901
#define __pyx_codeobj__902 __pyx_mstate_global->__pyx_codeobj__902
#define __pyx_codeobj__903 __pyx_mstate_global->__pyx_codeobj__903
#define __pyx_codeobj__904 __pyx_mstate_global->__pyx_codeobj__904
#define __pyx_codeobj__905 __pyx_mstate_global->__pyx_codeobj__905
#define __pyx_codeobj__906 __pyx_mstate_global->__pyx_codeobj__906
#define __pyx_codeobj__907 __pyx_mstate_global->__pyx_codeobj__907
#define __pyx_codeobj__908 __pyx_mstate_global->__pyx_codeobj__908
#define __pyx_codeobj__909 __pyx_mstate_global->__pyx_codeobj__909
#define __pyx_codeobj__910 __pyx_mstate_global->__pyx_codeobj__910
#define __pyx_codeobj__911 __pyx_mstate_global->__pyx_codeobj__911
#define __pyx_codeobj__912 __pyx_mstate_global->__pyx_codeobj__912
#define __pyx_codeobj__913 __pyx_mstate_global->__pyx_codeobj__913
#define __pyx_codeobj__914 __pyx_mstate_global->__pyx_codeobj__914
#define __pyx_codeobj__915 __pyx_mstate_global->__pyx_codeobj__915
#define __pyx_codeobj__916 __pyx_mstate_global->__pyx_codeobj__916
#define __pyx_codeobj__917 __pyx_mstate_global->__pyx_codeobj__917
#define __pyx_codeobj__918 __pyx_mstate_global->__pyx_codeobj__918
#define __pyx_codeobj__919 __pyx_mstate_global->__pyx_codeobj__919
#define __pyx_codeobj__920 __pyx_mstate_global->__pyx_codeobj__920
#define __pyx_codeobj__921 __pyx_mstate_global->__pyx_codeobj__921
#define __pyx_codeobj__922 __pyx_mstate_global->__pyx_codeobj__922
#define __pyx_codeobj__923 __pyx_mstate_global->__pyx_codeobj__923
#define __pyx_codeobj__925 __pyx_mstate_global->__pyx_codeobj__925
#define __pyx_codeobj__928 __pyx_mstate_global->__pyx_codeobj__928
#define __pyx_codeobj__930 __pyx_mstate_global->__pyx_codeobj__930
#define __pyx_codeobj__931 __pyx_mstate_global->__pyx_codeobj__931
#define __pyx_codeobj__933 __pyx_mstate_global->__pyx_codeobj__933
#define __pyx_codeobj__936 __pyx_mstate_global->__pyx_codeobj__936
#define __pyx_codeobj__938 __pyx_mstate_global->__pyx_codeobj__938
#define __pyx_codeobj__940 __pyx_mstate_global->__pyx_codeobj__940
#define __pyx_codeobj__941 __pyx_mstate_global->__pyx_codeobj__941
#define __pyx_codeobj__943 __pyx_mstate_global->__pyx_codeobj__943
#define __pyx_codeobj__945 __pyx_mstate_global->__pyx_codeobj__945
#define __pyx_codeobj__947 __pyx_mstate_global->__pyx_codeobj__947
#define __pyx_codeobj__949 __pyx_mstate_global->__pyx_codeobj__949
#define __pyx_codeobj__950 __pyx_mstate_global->__pyx_codeobj__950
#define __pyx_codeobj__952 __pyx_mstate_global->__pyx_codeobj__952
#define __pyx_codeobj__955 __pyx_mstate_global->__pyx_codeobj__955
#define __pyx_codeobj__957 __pyx_mstate_global->__pyx_codeobj__957
#define __pyx_codeobj__959 __pyx_mstate_global->__pyx_codeobj__959
#define __pyx_codeobj__962 __pyx_mstate_global->__pyx_codeobj__962
#define __pyx_codeobj__965 __pyx_mstate_global->__pyx_codeobj__965
#define __pyx_codeobj__967 __pyx_mstate_global->__pyx_codeobj__967
#define __pyx_codeobj__969 __pyx_mstate_global->__pyx_codeobj__969
#define __pyx_codeobj__972 __pyx_mstate_global->__pyx_codeobj__972
#define __pyx_codeobj__973 __pyx_mstate_global->__pyx_codeobj__973
#define __pyx_codeobj__974 __pyx_mstate_global->__pyx_codeobj__974
#define __pyx_codeobj__976 __pyx_mstate_global->__pyx_codeobj__976
/* #### Code section: module_code ### */
PyObject *YodaExc_Exception = 0;
PyObject *YodaExc_BinningError = 0;
PyObject *YodaExc_RangeError = 0;
PyObject *YodaExc_LockError = 0;
PyObject *YodaExc_GridError = 0;
PyObject *YodaExc_LogicError = 0;
PyObject *YodaExc_LowStatsError = 0;
PyObject *YodaExc_WeightError = 0;
PyObject *YodaExc_AnnotationError = 0;
PyObject *YodaExc_ReadError = 0;
PyObject *YodaExc_UserError = 0;

/* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyObject_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyObject_string_to_py_std__in_string", 0);

  /* "string.to_py":32
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyUnicode_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":31
 * 
 * @cname("__pyx_convert_PyObject_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyObject_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyObject_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyObject_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyUnicode_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyUnicode_string_to_py_std__in_string", 0);

  /* "string.to_py":38
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyStr_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyUnicode_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":37
 * 
 * @cname("__pyx_convert_PyUnicode_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyUnicode_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyUnicode_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyUnicode_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyStr_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyStr_string_to_py_std__in_string", 0);

  /* "string.to_py":44
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyBytes_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyStr_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":43
 * 
 * @cname("__pyx_convert_PyStr_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyStr_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyStr_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyStr_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyBytes_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyBytes_string_to_py_std__in_string", 0);

  /* "string.to_py":50
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * cdef extern from *:
 *     cdef object __Pyx_PyByteArray_FromStringAndSize(const char*, size_t)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":49
 * 
 * @cname("__pyx_convert_PyBytes_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyBytes_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyBytes_FromStringAndSize(s.data(), s.size())
 * cdef extern from *:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyBytes_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

static CYTHON_INLINE PyObject *__pyx_convert_PyByteArray_string_to_py_std__in_string(std::string const &__pyx_v_s) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_PyByteArray_string_to_py_std__in_string", 0);

  /* "string.to_py":56
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyByteArray_FromStringAndSize(__pyx_v_s.data(), __pyx_v_s.size()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "string.to_py":55
 * 
 * @cname("__pyx_convert_PyByteArray_string_to_py_std__in_string")
 * cdef inline object __pyx_convert_PyByteArray_string_to_py_std__in_string(const string& s):             # <<<<<<<<<<<<<<
 *     return __Pyx_PyByteArray_FromStringAndSize(s.data(), s.size())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("string.to_py.__pyx_convert_PyByteArray_string_to_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_string(std::vector<std::string>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_string", 0);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(0, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __pyx_convert_PyStr_string_to_py_std__in_string((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_string")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_string(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "string.from_py":13
 * 
 * @cname("__pyx_convert_string_from_py_std__in_string")
 * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = 0
 *     cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)
 */

static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v_o) {
  Py_ssize_t __pyx_v_length;
  char const *__pyx_v_data;
  std::string __pyx_r;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  std::string __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_string_from_py_std__in_string", 0);

  /* "string.from_py":14
 * @cname("__pyx_convert_string_from_py_std__in_string")
 * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *:
 *     cdef Py_ssize_t length = 0             # <<<<<<<<<<<<<<
 *     cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)
 *     return string(data, length)
 */
  __pyx_v_length = 0;

  /* "string.from_py":15
 * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *:
 *     cdef Py_ssize_t length = 0
 *     cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)             # <<<<<<<<<<<<<<
 *     return string(data, length)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_AsStringAndSize(__pyx_v_o, (&__pyx_v_length)); if (unlikely(__pyx_t_1 == ((char const *)NULL))) __PYX_ERR(0, 15, __pyx_L1_error)
  __pyx_v_data = __pyx_t_1;

  /* "string.from_py":16
 *     cdef Py_ssize_t length = 0
 *     cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)
 *     return string(data, length)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  try {
    __pyx_t_2 = std::string(__pyx_v_data, __pyx_v_length);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(0, 16, __pyx_L1_error)
  }
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "string.from_py":13
 * 
 * @cname("__pyx_convert_string_from_py_std__in_string")
 * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef Py_ssize_t length = 0
 *     cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("string.from_py.__pyx_convert_string_from_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_double")
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<double>  __pyx_convert_vector_from_py_double(PyObject *__pyx_v_o) {
  std::vector<double>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<double>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_double", 0);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_item); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((double)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(0, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_double")
 * cdef vector[X] __pyx_convert_vector_from_py_double(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_double(std::vector<double>  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_double", 0);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(0, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = PyFloat_FromDouble((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_double")
 * cdef object __pyx_convert_vector_to_py_double(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pair.to_py":190
 * 
 * @cname("__pyx_convert_pair_to_py_double____double")
 * cdef object __pyx_convert_pair_to_py_double____double(const pair[X,Y]& p):             # <<<<<<<<<<<<<<
 *     return p.first, p.second
 * 
 */

static PyObject *__pyx_convert_pair_to_py_double____double(std::pair<double,double>  const &__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_pair_to_py_double____double", 0);

  /* "pair.to_py":191
 * @cname("__pyx_convert_pair_to_py_double____double")
 * cdef object __pyx_convert_pair_to_py_double____double(const pair[X,Y]& p):
 *     return p.first, p.second             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_p.first); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_p.second); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "pair.to_py":190
 * 
 * @cname("__pyx_convert_pair_to_py_double____double")
 * cdef object __pyx_convert_pair_to_py_double____double(const pair[X,Y]& p):             # <<<<<<<<<<<<<<
 *     return p.first, p.second
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pair.to_py.__pyx_convert_pair_to_py_double____double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "pair.from_py":177
 * 
 * @cname("__pyx_convert_pair_from_py_double__and_double")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_double__and_double(object o) except *:             # <<<<<<<<<<<<<<
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)
 */

static std::pair<double,double>  __pyx_convert_pair_from_py_double__and_double(PyObject *__pyx_v_o) {
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_y = NULL;
  std::pair<double,double>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *(*__pyx_t_4)(PyObject *);
  double __pyx_t_5;
  double __pyx_t_6;
  std::pair<double,double>  __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_pair_from_py_double__and_double", 0);

  /* "pair.from_py":178
 * @cname("__pyx_convert_pair_from_py_double__and_double")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_double__and_double(object o) except *:
 *     x, y = o             # <<<<<<<<<<<<<<
 *     return pair[X,Y](<X>x, <Y>y)
 * 
 */
  if ((likely(PyTuple_CheckExact(__pyx_v_o))) || (PyList_CheckExact(__pyx_v_o))) {
    PyObject* sequence = __pyx_v_o;
    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
    if (unlikely(size != 2)) {
      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      __PYX_ERR(0, 178, __pyx_L1_error)
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
    } else {
      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
    }
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_2);
    #else
    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    #endif
  } else {
    Py_ssize_t index = -1;
    __pyx_t_3 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3);
    index = 0; __pyx_t_1 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 1; __pyx_t_2 = __pyx_t_4(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_4(__pyx_t_3), 2) < 0) __PYX_ERR(0, 178, __pyx_L1_error)
    __pyx_t_4 = NULL;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    __PYX_ERR(0, 178, __pyx_L1_error)
    __pyx_L4_unpacking_done:;
  }
  __pyx_v_x = __pyx_t_1;
  __pyx_t_1 = 0;
  __pyx_v_y = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "pair.from_py":179
 * cdef pair[X,Y] __pyx_convert_pair_from_py_double__and_double(object o) except *:
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
  try {
    __pyx_t_7 = std::pair<double,double> (((double)__pyx_t_5), ((double)__pyx_t_6));
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(0, 179, __pyx_L1_error)
  }
  __pyx_r = __pyx_t_7;
  goto __pyx_L0;

  /* "pair.from_py":177
 * 
 * @cname("__pyx_convert_pair_from_py_double__and_double")
 * cdef pair[X,Y] __pyx_convert_pair_from_py_double__and_double(object o) except *:             # <<<<<<<<<<<<<<
 *     x, y = o
 *     return pair[X,Y](<X>x, <Y>y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("pair.from_py.__pyx_convert_pair_from_py_double__and_double", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "map.to_py":237
 * 
 * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(const map[X,Y]& s):             # <<<<<<<<<<<<<<
 *     o = {}
 *     cdef const map[X,Y].value_type *key_value
 */

static PyObject *__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(std::map<std::string,std::pair<double,double> >  const &__pyx_v_s) {
  PyObject *__pyx_v_o = NULL;
  std::map<std::string,std::pair<double,double> > ::value_type const *__pyx_v_key_value;
  std::map<std::string,std::pair<double,double> > ::const_iterator __pyx_v_iter;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___", 0);

  /* "map.to_py":238
 * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(const map[X,Y]& s):
 *     o = {}             # <<<<<<<<<<<<<<
 *     cdef const map[X,Y].value_type *key_value
 *     cdef map[X,Y].const_iterator iter = s.begin()
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_o = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "map.to_py":240
 *     o = {}
 *     cdef const map[X,Y].value_type *key_value
 *     cdef map[X,Y].const_iterator iter = s.begin()             # <<<<<<<<<<<<<<
 *     while iter != s.end():
 *         key_value = &cython.operator.dereference(iter)
 */
  __pyx_v_iter = __pyx_v_s.begin();

  /* "map.to_py":241
 *     cdef const map[X,Y].value_type *key_value
 *     cdef map[X,Y].const_iterator iter = s.begin()
 *     while iter != s.end():             # <<<<<<<<<<<<<<
 *         key_value = &cython.operator.dereference(iter)
 *         o[key_value.first] = key_value.second
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_iter != __pyx_v_s.end());
    if (!__pyx_t_2) break;

    /* "map.to_py":242
 *     cdef map[X,Y].const_iterator iter = s.begin()
 *     while iter != s.end():
 *         key_value = &cython.operator.dereference(iter)             # <<<<<<<<<<<<<<
 *         o[key_value.first] = key_value.second
 *         cython.operator.preincrement(iter)
 */
    __pyx_v_key_value = (&(*__pyx_v_iter));

    /* "map.to_py":243
 *     while iter != s.end():
 *         key_value = &cython.operator.dereference(iter)
 *         o[key_value.first] = key_value.second             # <<<<<<<<<<<<<<
 *         cython.operator.preincrement(iter)
 *     return o
 */
    __pyx_t_1 = __pyx_convert_pair_to_py_double____double(__pyx_v_key_value->second); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_key_value->first); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    if (unlikely((PyDict_SetItem(__pyx_v_o, __pyx_t_3, __pyx_t_1) < 0))) __PYX_ERR(0, 243, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "map.to_py":244
 *         key_value = &cython.operator.dereference(iter)
 *         o[key_value.first] = key_value.second
 *         cython.operator.preincrement(iter)             # <<<<<<<<<<<<<<
 *     return o
 * 
 */
    (void)((++__pyx_v_iter));
  }

  /* "map.to_py":245
 *         o[key_value.first] = key_value.second
 *         cython.operator.preincrement(iter)
 *     return o             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "map.to_py":237
 * 
 * @cname("__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___")
 * cdef object __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(const map[X,Y]& s):             # <<<<<<<<<<<<<<
 *     o = {}
 *     cdef const map[X,Y].value_type *key_value
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("map.to_py.__pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_size_t")
 * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<size_t>  __pyx_convert_vector_from_py_size_t(PyObject *__pyx_v_o) {
  std::vector<size_t>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<size_t>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_size_t", 0);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_As_size_t(__pyx_v_item); if (unlikely((__pyx_t_5 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((size_t)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(0, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_size_t")
 * cdef vector[X] __pyx_convert_vector_from_py_size_t(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_size_t", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

static PyObject *__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(std::vector<std::vector<double> >  const &__pyx_v_v) {
  Py_ssize_t __pyx_v_v_size_signed;
  PyObject *__pyx_v_o = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_item = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___", 0);

  /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  __pyx_t_1 = (__pyx_v_v.size() > ((size_t)PY_SSIZE_T_MAX));
  if (unlikely(__pyx_t_1)) {

    /* "vector.to_py":68
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()             # <<<<<<<<<<<<<<
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 */
    PyErr_NoMemory(); __PYX_ERR(0, 68, __pyx_L1_error)

    /* "vector.to_py":67
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const vector[X]& v):
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:             # <<<<<<<<<<<<<<
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()
 */
  }

  /* "vector.to_py":69
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 *     v_size_signed = <Py_ssize_t> v.size()             # <<<<<<<<<<<<<<
 * 
 *     o = PyList_New(v_size_signed)
 */
  __pyx_v_v_size_signed = ((Py_ssize_t)__pyx_v_v.size());

  /* "vector.to_py":71
 *     v_size_signed = <Py_ssize_t> v.size()
 * 
 *     o = PyList_New(v_size_signed)             # <<<<<<<<<<<<<<
 * 
 *     cdef Py_ssize_t i
 */
  __pyx_t_2 = PyList_New(__pyx_v_v_size_signed); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_o = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "vector.to_py":76
 *     cdef object item
 * 
 *     for i in range(v_size_signed):             # <<<<<<<<<<<<<<
 *         item = v[i]
 *         Py_INCREF(item)
 */
  __pyx_t_3 = __pyx_v_v_size_signed;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "vector.to_py":77
 * 
 *     for i in range(v_size_signed):
 *         item = v[i]             # <<<<<<<<<<<<<<
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)
 */
    __pyx_t_2 = __pyx_convert_vector_to_py_double((__pyx_v_v[__pyx_v_i])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "vector.to_py":78
 *     for i in range(v_size_signed):
 *         item = v[i]
 *         Py_INCREF(item)             # <<<<<<<<<<<<<<
 *         PyList_SET_ITEM(o, i, item)
 * 
 */
    Py_INCREF(__pyx_v_item);

    /* "vector.to_py":79
 *         item = v[i]
 *         Py_INCREF(item)
 *         PyList_SET_ITEM(o, i, item)             # <<<<<<<<<<<<<<
 * 
 *     return o
 */
    PyList_SET_ITEM(__pyx_v_o, __pyx_v_i, __pyx_v_item);
  }

  /* "vector.to_py":81
 *         PyList_SET_ITEM(o, i, item)
 * 
 *     return o             # <<<<<<<<<<<<<<
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "vector.to_py":66
 * 
 * @cname("__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___")
 * cdef object __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(const vector[X]& v):             # <<<<<<<<<<<<<<
 *     if v.size() > <size_t> PY_SSIZE_T_MAX:
 *         raise MemoryError()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("vector.to_py.__pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_int")
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

static std::vector<int>  __pyx_convert_vector_from_py_int(PyObject *__pyx_v_o) {
  std::vector<int>  __pyx_v_v;
  PyObject *__pyx_v_item = NULL;
  std::vector<int>  __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__pyx_convert_vector_from_py_int", 0);

  /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  if (likely(PyList_CheckExact(__pyx_v_o)) || PyTuple_CheckExact(__pyx_v_o)) {
    __pyx_t_1 = __pyx_v_o; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_o); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 47, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(0, 47, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 47, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(0, 47, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "vector.from_py":48
 *     cdef vector[X] v
 *     for item in o:
 *         v.push_back(<X>item)             # <<<<<<<<<<<<<<
 *     return v
 * 
 */
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_item); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 48, __pyx_L1_error)
    try {
      __pyx_v_v.push_back(((int)__pyx_t_5));
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(0, 48, __pyx_L1_error)
    }

    /* "vector.from_py":47
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:
 *     cdef vector[X] v
 *     for item in o:             # <<<<<<<<<<<<<<
 *         v.push_back(<X>item)
 *     return v
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "vector.from_py":49
 *     for item in o:
 *         v.push_back(<X>item)
 *     return v             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_v;
  goto __pyx_L0;

  /* "vector.from_py":45
 * 
 * @cname("__pyx_convert_vector_from_py_int")
 * cdef vector[X] __pyx_convert_vector_from_py_int(object o) except *:             # <<<<<<<<<<<<<<
 *     cdef vector[X] v
 *     for item in o:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("vector.from_py.__pyx_convert_vector_from_py_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_pretend_to_initialize(&__pyx_r);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":7
 *     cdef object _owner
 * 
 *     cdef inline void* ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         if self._ptr == NULL:
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')
 */

static CYTHON_INLINE void *__pyx_f_4yoda_4util_4Base_ptr(struct __pyx_obj_4yoda_4util_Base *__pyx_v_self) {
  void *__pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ptr", 0);

  /* "yoda/util.pxd":8
 * 
 *     cdef inline void* ptr(self) except NULL:
 *         if self._ptr == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')
 *         return self._ptr
 */
  __pyx_t_1 = (__pyx_v_self->_ptr == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "yoda/util.pxd":9
 *     cdef inline void* ptr(self) except NULL:
 *         if self._ptr == NULL:
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')             # <<<<<<<<<<<<<<
 *         return self._ptr
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_MemoryError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 9, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __PYX_ERR(7, 9, __pyx_L1_error)

    /* "yoda/util.pxd":8
 * 
 *     cdef inline void* ptr(self) except NULL:
 *         if self._ptr == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')
 *         return self._ptr
 */
  }

  /* "yoda/util.pxd":10
 *         if self._ptr == NULL:
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')
 *         return self._ptr             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_r = __pyx_v_self->_ptr;
  goto __pyx_L0;

  /* "yoda/util.pxd":7
 *     cdef object _owner
 * 
 *     cdef inline void* ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         if self._ptr == NULL:
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.util.Base.ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":18
 * ## e.g. if you want deallocation to happen automatically when this object goes
 * ## out of scope
 * cdef inline set_owned_ptr(Base obj, void* ptr):             # <<<<<<<<<<<<<<
 *     obj._ptr = ptr
 *     obj._deallocate = True
 */

static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_set_owned_ptr(struct __pyx_obj_4yoda_4util_Base *__pyx_v_obj, void *__pyx_v_ptr) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_owned_ptr", 0);

  /* "yoda/util.pxd":19
 * ## out of scope
 * cdef inline set_owned_ptr(Base obj, void* ptr):
 *     obj._ptr = ptr             # <<<<<<<<<<<<<<
 *     obj._deallocate = True
 * 
 */
  __pyx_v_obj->_ptr = __pyx_v_ptr;

  /* "yoda/util.pxd":20
 * cdef inline set_owned_ptr(Base obj, void* ptr):
 *     obj._ptr = ptr
 *     obj._deallocate = True             # <<<<<<<<<<<<<<
 * 
 * ## Use this for setting a pointer that is *not* owned by the object obj e.g. if
 */
  __pyx_v_obj->_deallocate = 1;

  /* "yoda/util.pxd":18
 * ## e.g. if you want deallocation to happen automatically when this object goes
 * ## out of scope
 * cdef inline set_owned_ptr(Base obj, void* ptr):             # <<<<<<<<<<<<<<
 *     obj._ptr = ptr
 *     obj._deallocate = True
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":25
 * ## you were given this object by a class which will deallocate it once it's
 * ## finished
 * cdef inline set_borrowed_ptr(Base obj, void* ptr, object owner):             # <<<<<<<<<<<<<<
 *     obj._ptr = ptr
 *     obj._deallocate = False
 */

static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_set_borrowed_ptr(struct __pyx_obj_4yoda_4util_Base *__pyx_v_obj, void *__pyx_v_ptr, PyObject *__pyx_v_owner) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_borrowed_ptr", 0);

  /* "yoda/util.pxd":26
 * ## finished
 * cdef inline set_borrowed_ptr(Base obj, void* ptr, object owner):
 *     obj._ptr = ptr             # <<<<<<<<<<<<<<
 *     obj._deallocate = False
 *     obj._owner = owner
 */
  __pyx_v_obj->_ptr = __pyx_v_ptr;

  /* "yoda/util.pxd":27
 * cdef inline set_borrowed_ptr(Base obj, void* ptr, object owner):
 *     obj._ptr = ptr
 *     obj._deallocate = False             # <<<<<<<<<<<<<<
 *     obj._owner = owner
 * 
 */
  __pyx_v_obj->_deallocate = 0;

  /* "yoda/util.pxd":28
 *     obj._ptr = ptr
 *     obj._deallocate = False
 *     obj._owner = owner             # <<<<<<<<<<<<<<
 * 
 * ## Use this to create a new object of type cls from the pointer ptr. The class is
 */
  __Pyx_INCREF(__pyx_v_owner);
  __Pyx_GIVEREF(__pyx_v_owner);
  __Pyx_GOTREF(__pyx_v_obj->_owner);
  __Pyx_DECREF(__pyx_v_obj->_owner);
  __pyx_v_obj->_owner = __pyx_v_owner;

  /* "yoda/util.pxd":25
 * ## you were given this object by a class which will deallocate it once it's
 * ## finished
 * cdef inline set_borrowed_ptr(Base obj, void* ptr, object owner):             # <<<<<<<<<<<<<<
 *     obj._ptr = ptr
 *     obj._deallocate = False
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":34
 * ## that you want to use for e.g. loaders or factory methods where the user is
 * ## expected to manage memory. Or where you've explicitly called new.
 * cdef inline object new_owned_cls(object cls, void* ptr):             # <<<<<<<<<<<<<<
 *     obj = cls.__new__(cls)
 *     set_owned_ptr(obj, ptr)
 */

static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_new_owned_cls(PyObject *__pyx_v_cls, void *__pyx_v_ptr) {
  PyObject *__pyx_v_obj = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_owned_cls", 0);

  /* "yoda/util.pxd":35
 * ## expected to manage memory. Or where you've explicitly called new.
 * cdef inline object new_owned_cls(object cls, void* ptr):
 *     obj = cls.__new__(cls)             # <<<<<<<<<<<<<<
 *     set_owned_ptr(obj, ptr)
 *     return obj
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cls};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 35, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_obj = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "yoda/util.pxd":36
 * cdef inline object new_owned_cls(object cls, void* ptr):
 *     obj = cls.__new__(cls)
 *     set_owned_ptr(obj, ptr)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  if (!(likely(((__pyx_v_obj) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_ptype_4yoda_4util_Base))))) __PYX_ERR(7, 36, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_obj), __pyx_v_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "yoda/util.pxd":37
 *     obj = cls.__new__(cls)
 *     set_owned_ptr(obj, ptr)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * ## Use this to create a thin wrapper around a pointer that will *not* be
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "yoda/util.pxd":34
 * ## that you want to use for e.g. loaders or factory methods where the user is
 * ## expected to manage memory. Or where you've explicitly called new.
 * cdef inline object new_owned_cls(object cls, void* ptr):             # <<<<<<<<<<<<<<
 *     obj = cls.__new__(cls)
 *     set_owned_ptr(obj, ptr)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.util.new_owned_cls", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":42
 * ## deallocated when it goes out of scope. Useful when you're given a reference
 * ## from a class which is not expecting you to delete its innards!
 * cdef inline object new_borrowed_cls(object cls, void* ptr, object owner):             # <<<<<<<<<<<<<<
 *     obj = cls.__new__(cls)
 *     set_borrowed_ptr(obj, ptr, owner)
 */

static CYTHON_INLINE PyObject *__pyx_f_4yoda_4util_new_borrowed_cls(PyObject *__pyx_v_cls, void *__pyx_v_ptr, PyObject *__pyx_v_owner) {
  PyObject *__pyx_v_obj = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("new_borrowed_cls", 0);

  /* "yoda/util.pxd":43
 * ## from a class which is not expecting you to delete its innards!
 * cdef inline object new_borrowed_cls(object cls, void* ptr, object owner):
 *     obj = cls.__new__(cls)             # <<<<<<<<<<<<<<
 *     set_borrowed_ptr(obj, ptr, owner)
 *     return obj
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_cls, __pyx_n_s_new); if (unlikely(!__pyx_t_2)) __PYX_ERR(7, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_cls};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_obj = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "yoda/util.pxd":44
 * cdef inline object new_borrowed_cls(object cls, void* ptr, object owner):
 *     obj = cls.__new__(cls)
 *     set_borrowed_ptr(obj, ptr, owner)             # <<<<<<<<<<<<<<
 *     return obj
 * 
 */
  if (!(likely(((__pyx_v_obj) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_obj, __pyx_ptype_4yoda_4util_Base))))) __PYX_ERR(7, 44, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_borrowed_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_obj), __pyx_v_ptr, __pyx_v_owner); if (unlikely(!__pyx_t_1)) __PYX_ERR(7, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "yoda/util.pxd":45
 *     obj = cls.__new__(cls)
 *     set_borrowed_ptr(obj, ptr, owner)
 *     return obj             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_obj);
  __pyx_r = __pyx_v_obj;
  goto __pyx_L0;

  /* "yoda/util.pxd":42
 * ## deallocated when it goes out of scope. Useful when you're given a reference
 * ## from a class which is not expecting you to delete its innards!
 * cdef inline object new_borrowed_cls(object cls, void* ptr, object owner):             # <<<<<<<<<<<<<<
 *     obj = cls.__new__(cls)
 *     set_borrowed_ptr(obj, ptr, owner)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.util.new_borrowed_cls", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/util.pxd":49
 * 
 * ## Translation utility to allow use of 'Pythonic' negative indices
 * cdef inline size_t pythonic_index(int i, size_t size) except ? 0:             # <<<<<<<<<<<<<<
 *     if i < 0:
 *         i += size
 */

static CYTHON_INLINE size_t __pyx_f_4yoda_4util_pythonic_index(int __pyx_v_i, size_t __pyx_v_size) {
  size_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pythonic_index", 0);

  /* "yoda/util.pxd":50
 * ## Translation utility to allow use of 'Pythonic' negative indices
 * cdef inline size_t pythonic_index(int i, size_t size) except ? 0:
 *     if i < 0:             # <<<<<<<<<<<<<<
 *         i += size
 *     if 0 <= i and i < size:
 */
  __pyx_t_1 = (__pyx_v_i < 0);
  if (__pyx_t_1) {

    /* "yoda/util.pxd":51
 * cdef inline size_t pythonic_index(int i, size_t size) except ? 0:
 *     if i < 0:
 *         i += size             # <<<<<<<<<<<<<<
 *     if 0 <= i and i < size:
 *         return i
 */
    __pyx_v_i = (__pyx_v_i + __pyx_v_size);

    /* "yoda/util.pxd":50
 * ## Translation utility to allow use of 'Pythonic' negative indices
 * cdef inline size_t pythonic_index(int i, size_t size) except ? 0:
 *     if i < 0:             # <<<<<<<<<<<<<<
 *         i += size
 *     if 0 <= i and i < size:
 */
  }

  /* "yoda/util.pxd":52
 *     if i < 0:
 *         i += size
 *     if 0 <= i and i < size:             # <<<<<<<<<<<<<<
 *         return i
 *     else:
 */
  __pyx_t_2 = (0 <= __pyx_v_i);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_i < __pyx_v_size);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (likely(__pyx_t_1)) {

    /* "yoda/util.pxd":53
 *         i += size
 *     if 0 <= i and i < size:
 *         return i             # <<<<<<<<<<<<<<
 *     else:
 *         raise IndexError
 */
    __pyx_r = __pyx_v_i;
    goto __pyx_L0;

    /* "yoda/util.pxd":52
 *     if i < 0:
 *         i += size
 *     if 0 <= i and i < size:             # <<<<<<<<<<<<<<
 *         return i
 *     else:
 */
  }

  /* "yoda/util.pxd":55
 *         return i
 *     else:
 *         raise IndexError             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_Raise(__pyx_builtin_IndexError, 0, 0, 0);
    __PYX_ERR(7, 55, __pyx_L1_error)
  }

  /* "yoda/util.pxd":49
 * 
 * ## Translation utility to allow use of 'Pythonic' negative indices
 * cdef inline size_t pythonic_index(int i, size_t size) except ? 0:             # <<<<<<<<<<<<<<
 *     if i < 0:
 *         i += size
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.util.pythonic_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/core.pyx":20
 * from operator import attrgetter
 * 
 * def version():             # <<<<<<<<<<<<<<
 *     "Return YODA library version as a string"
 *     return c.version()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_1version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_version, "version()\nReturn YODA library version as a string");
static PyMethodDef __pyx_mdef_4yoda_4core_1version = {"version", (PyCFunction)__pyx_pw_4yoda_4core_1version, METH_NOARGS, __pyx_doc_4yoda_4core_version};
static PyObject *__pyx_pw_4yoda_4core_1version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("version (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_version(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_version(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("version", 0);

  /* "yoda/core.pyx":22
 * def version():
 *     "Return YODA library version as a string"
 *     return c.version()             # <<<<<<<<<<<<<<
 * 
 * def getLibPath():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_PyStr_string_to_py_std__in_string(YODA::version()); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":20
 * from operator import attrgetter
 * 
 * def version():             # <<<<<<<<<<<<<<
 *     "Return YODA library version as a string"
 *     return c.version()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/core.pyx":24
 *     return c.version()
 * 
 * def getLibPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3getLibPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_2getLibPath, "getLibPath()\nReturn the directory containing the YODA library");
static PyMethodDef __pyx_mdef_4yoda_4core_3getLibPath = {"getLibPath", (PyCFunction)__pyx_pw_4yoda_4core_3getLibPath, METH_NOARGS, __pyx_doc_4yoda_4core_2getLibPath};
static PyObject *__pyx_pw_4yoda_4core_3getLibPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getLibPath (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_2getLibPath(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_2getLibPath(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getLibPath", 0);

  /* "yoda/core.pyx":26
 * def getLibPath():
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()             # <<<<<<<<<<<<<<
 * 
 * def getDataPath():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_PyStr_string_to_py_std__in_string(YODA::getLibPath()); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":24
 *     return c.version()
 * 
 * def getLibPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.getLibPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/core.pyx":28
 *     return c.getLibPath()
 * 
 * def getDataPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5getDataPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_4getDataPath, "getDataPath()\nReturn the directory containing the YODA data files");
static PyMethodDef __pyx_mdef_4yoda_4core_5getDataPath = {"getDataPath", (PyCFunction)__pyx_pw_4yoda_4core_5getDataPath, METH_NOARGS, __pyx_doc_4yoda_4core_4getDataPath};
static PyObject *__pyx_pw_4yoda_4core_5getDataPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getDataPath (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_4getDataPath(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_4getDataPath(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getDataPath", 0);

  /* "yoda/core.pyx":30
 * def getDataPath():
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()             # <<<<<<<<<<<<<<
 * 
 * def getYodaDataPath():
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_PyStr_string_to_py_std__in_string(YODA::getDataPath()); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":28
 *     return c.getLibPath()
 * 
 * def getDataPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.getDataPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "yoda/core.pyx":32
 *     return c.getDataPath()
 * 
 * def getYodaDataPath():             # <<<<<<<<<<<<<<
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7getYodaDataPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_6getYodaDataPath, "getYodaDataPath()\nReturn the list of directories containing YODA data files");
static PyMethodDef __pyx_mdef_4yoda_4core_7getYodaDataPath = {"getYodaDataPath", (PyCFunction)__pyx_pw_4yoda_4core_7getYodaDataPath, METH_NOARGS, __pyx_doc_4yoda_4core_6getYodaDataPath};
static PyObject *__pyx_pw_4yoda_4core_7getYodaDataPath(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("getYodaDataPath (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_6getYodaDataPath(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_6getYodaDataPath(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("getYodaDataPath", 0);

  /* "yoda/core.pyx":34
 * def getYodaDataPath():
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()             # <<<<<<<<<<<<<<
 * 
 * include "include/Errors.pyx"
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_to_py_std_3a__3a_string(YODA::getYodaDataPath()); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "yoda/core.pyx":32
 *     return c.getDataPath()
 * 
 * def getYodaDataPath():             # <<<<<<<<<<<<<<
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.getYodaDataPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":7
 *     """
 * 
 *     cdef c.Dbn0D* d0ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn0D *> self.ptr()
 *     # TODO: remove!
 */

static YODA::Dbn0D *__pyx_f_4yoda_4core_5Dbn0D_d0ptr(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  YODA::Dbn0D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("d0ptr", 0);

  /* "include/Dbn0D.pyx":8
 * 
 *     cdef c.Dbn0D* d0ptr(self) except NULL:
 *         return <c.Dbn0D *> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove!
 *     cdef c.Dbn0D *_Dbn0D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(9, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn0D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":7
 *     """
 * 
 *     cdef c.Dbn0D* d0ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn0D *> self.ptr()
 *     # TODO: remove!
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.d0ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":10
 *         return <c.Dbn0D *> self.ptr()
 *     # TODO: remove!
 *     cdef c.Dbn0D *_Dbn0D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn0D *> self.ptr()
 * 
 */

static YODA::Dbn0D *__pyx_f_4yoda_4core_5Dbn0D__Dbn0D(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  YODA::Dbn0D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Dbn0D", 0);

  /* "include/Dbn0D.pyx":11
 *     # TODO: remove!
 *     cdef c.Dbn0D *_Dbn0D(self) except NULL:
 *         return <c.Dbn0D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(9, 11, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn0D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":10
 *         return <c.Dbn0D *> self.ptr()
 *     # TODO: remove!
 *     cdef c.Dbn0D *_Dbn0D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn0D *> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D._Dbn0D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":13
 *         return <c.Dbn0D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn0D *p = self.d0ptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_5Dbn0D_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_5Dbn0D_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_5Dbn0D___dealloc__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_5Dbn0D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  YODA::Dbn0D *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Dbn0D.pyx":14
 * 
 *     def __dealloc__(self):
 *         cdef c.Dbn0D *p = self.d0ptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 14, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Dbn0D.pyx":15
 *     def __dealloc__(self):
 *         cdef c.Dbn0D *p = self.d0ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Dbn0D.pyx":16
 *         cdef c.Dbn0D *p = self.d0ptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/Dbn0D.pyx":15
 *     def __dealloc__(self):
 *         cdef c.Dbn0D *p = self.d0ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Dbn0D.pyx":13
 *         return <c.Dbn0D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn0D *p = self.d0ptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Dbn0D.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Dbn0D.pyx":19
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn0D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn0D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn0D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_2__init__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_5Dbn0D_2__init__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Dbn0D.pyx":20
 * 
 *     def __init__(self):
 *         cutil.set_owned_ptr(self, new c.Dbn0D())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn0D()); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Dbn0D.pyx":19
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn0D())
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Dbn0D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":22
 *         cutil.set_owned_ptr(self, new c.Dbn0D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Dbn0D(val=%g, err=%g)>' % (self.val, self.err)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_4__repr__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Dbn0D.pyx":23
 * 
 *     def __repr__(self):
 *         return '<Dbn0D(val=%g, err=%g)>' % (self.val, self.err)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_1)) __PYX_ERR(9, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_err); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn0D_val_g_err_g, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":22
 *         cutil.set_owned_ptr(self, new c.Dbn0D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Dbn0D(val=%g, err=%g)>' % (self.val, self.err)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":26
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_6copy, "Dbn0D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_6copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_6copy(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_6copy(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Dbn0D.pyx":27
 * 
 *     def copy(self):
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 27, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn0D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":26
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn0D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":29
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_8reset, "Dbn0D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_9reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_8reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_8reset(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_8reset(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Dbn0D.pyx":35
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d0ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 35, __pyx_L1_error)
  __pyx_t_1->reset();

  /* "include/Dbn0D.pyx":29
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":38
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float weight=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_10fill, "Dbn0D.fill(self, weight=1.0, fraction=1.0)\n\n        (float weight=1.0) -> None\n\n        Fills the distribution with the given weight at given x.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_11fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_10fill};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 38, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 38, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(9, 38, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_weight = values[0];
    __pyx_v_fraction = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 2, __pyx_nargs); __PYX_ERR(9, 38, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_10fill(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_10fill(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Dbn0D.pyx":44
 *         Fills the distribution with the given weight at given x.
 *         """
 *         self.d0ptr().fill(weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, w):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 44, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 44, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 44, __pyx_L1_error)
  __pyx_t_1->fill(__pyx_t_2, __pyx_t_3);

  /* "include/Dbn0D.pyx":38
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float weight=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":46
 *         self.d0ptr().fill(weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_12scaleW, "Dbn0D.scaleW(self, w)\n\n        (float) -> None\n\n        Scale the weights by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_13scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_12scaleW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(9, 46, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(9, 46, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(9, 46, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_12scaleW(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Dbn0D.pyx":52
 *         Scale the weights by the given factor.
 *         """
 *         self.d0ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 52, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(9, 52, __pyx_L1_error)
  __pyx_t_1->scaleW(__pyx_t_2);

  /* "include/Dbn0D.pyx":46
 *         self.d0ptr().fill(weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":56
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_15numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_14numEntries, "Dbn0D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_15numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_15numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_14numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_15numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_14numEntries(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_14numEntries(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  unsigned long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Dbn0D.pyx":58
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 58, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 58, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":56
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":61
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_17effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_16effNumEntries, "Dbn0D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_17effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_17effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_16effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_17effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_16effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_16effNumEntries(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Dbn0D.pyx":63
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 63, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->effNumEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 63, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":61
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":67
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d0ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_19errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_18errW, "Dbn0D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_19errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_19errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_18errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_19errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("errW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "errW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_18errW(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_18errW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errW", 0);

  /* "include/Dbn0D.pyx":69
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d0ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 69, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->errW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 69, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":67
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d0ptr().errW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.errW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":72
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_21relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_20relErrW, "Dbn0D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_21relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_21relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_20relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_21relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErrW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErrW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_20relErrW(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_20relErrW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrW", 0);

  /* "include/Dbn0D.pyx":74
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 74, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErrW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 74, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":72
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.relErrW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":78
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_23sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_22sumW, "Dbn0D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_23sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_23sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_22sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_23sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_22sumW(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_22sumW(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Dbn0D.pyx":80
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 80, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 80, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":78
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":83
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_25sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_24sumW2, "Dbn0D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_25sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_25sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_24sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_25sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_24sumW2(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_24sumW2(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Dbn0D.pyx":85
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 85, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(9, 85, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":83
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":88
 * 
 * 
 *     def __add__(Dbn0D self, Dbn0D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) + deref(other.d0ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_27__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_27__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn0D, 1, "other", 0))) __PYX_ERR(9, 88, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_26__add__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_26__add__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  YODA::Dbn0D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Dbn0D.pyx":89
 * 
 *     def __add__(Dbn0D self, Dbn0D other):
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) + deref(other.d0ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Dbn0D self, Dbn0D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 89, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 89, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D), new YODA::Dbn0D(((*__pyx_t_1) + (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":88
 * 
 * 
 *     def __add__(Dbn0D self, Dbn0D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) + deref(other.d0ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn0D.pyx":91
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) + deref(other.d0ptr())))
 * 
 *     def __sub__(Dbn0D self, Dbn0D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) - deref(other.d0ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_29__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_29__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn0D, 1, "other", 0))) __PYX_ERR(9, 91, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_28__sub__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_28__sub__(struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn0D *__pyx_t_1;
  YODA::Dbn0D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Dbn0D.pyx":92
 * 
 *     def __sub__(Dbn0D self, Dbn0D other):
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) - deref(other.d0ptr())))             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 92, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn0D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d0ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn0D *)NULL))) __PYX_ERR(9, 92, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D), new YODA::Dbn0D(((*__pyx_t_1) - (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn0D.pyx":91
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) + deref(other.d0ptr())))
 * 
 *     def __sub__(Dbn0D self, Dbn0D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn0D, new c.Dbn0D(deref(self.d0ptr()) - deref(other.d0ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn0D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_31__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_30__reduce_cython__, "Dbn0D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_31__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_30__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_31__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_30__reduce_cython__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_33__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn0D_32__setstate_cython__, "Dbn0D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn0D_33__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_32__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn0D_33__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn0D_32__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn0D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn0D_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn0D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn0D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":7
 *     """
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 *     # TODO: remove!
 */

static YODA::Dbn1D *__pyx_f_4yoda_4core_5Dbn1D_d1ptr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  YODA::Dbn1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("d1ptr", 0);

  /* "include/Dbn1D.pyx":8
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:
 *         return <c.Dbn1D *> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove!
 *     cdef c.Dbn1D *_Dbn1D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(10, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":7
 *     """
 * 
 *     cdef c.Dbn1D* d1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 *     # TODO: remove!
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.d1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":10
 *         return <c.Dbn1D *> self.ptr()
 *     # TODO: remove!
 *     cdef c.Dbn1D *_Dbn1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 * 
 */

static YODA::Dbn1D *__pyx_f_4yoda_4core_5Dbn1D__Dbn1D(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  YODA::Dbn1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Dbn1D", 0);

  /* "include/Dbn1D.pyx":11
 *     # TODO: remove!
 *     cdef c.Dbn1D *_Dbn1D(self) except NULL:
 *         return <c.Dbn1D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(10, 11, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":10
 *         return <c.Dbn1D *> self.ptr()
 *     # TODO: remove!
 *     cdef c.Dbn1D *_Dbn1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn1D *> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D._Dbn1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":13
 *         return <c.Dbn1D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn1D *p = self.d1ptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_5Dbn1D_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_5Dbn1D_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_5Dbn1D___dealloc__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_5Dbn1D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  YODA::Dbn1D *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Dbn1D.pyx":14
 * 
 *     def __dealloc__(self):
 *         cdef c.Dbn1D *p = self.d1ptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 14, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Dbn1D.pyx":15
 *     def __dealloc__(self):
 *         cdef c.Dbn1D *p = self.d1ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Dbn1D.pyx":16
 *         cdef c.Dbn1D *p = self.d1ptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/Dbn1D.pyx":15
 *     def __dealloc__(self):
 *         cdef c.Dbn1D *p = self.d1ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Dbn1D.pyx":13
 *         return <c.Dbn1D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn1D *p = self.d1ptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Dbn1D.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Dbn1D.pyx":19
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn1D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn1D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_2__init__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_5Dbn1D_2__init__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Dbn1D.pyx":20
 * 
 *     def __init__(self):
 *         cutil.set_owned_ptr(self, new c.Dbn1D())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn1D()); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Dbn1D.pyx":19
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Dbn1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":22
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_4__repr__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_v_mean = NULL;
  PyObject *__pyx_v_sd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Dbn1D.pyx":23
 * 
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(10, 23, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_mean = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn1D.pyx":24
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(10, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 24, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_sd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn1D.pyx":25
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return '<Dbn1D(mean=%s, stddev=%s)>' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn1D_mean_s_stddev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":22
 *         cutil.set_owned_ptr(self, new c.Dbn1D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mean);
  __Pyx_XDECREF(__pyx_v_sd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":28
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_6copy, "Dbn1D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_6copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_6copy(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_6copy(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Dbn1D.pyx":29
 * 
 *     def copy(self):
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 29, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn1D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":28
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn1D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":31
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_8reset, "Dbn1D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_9reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_8reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_8reset(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_8reset(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Dbn1D.pyx":37
 *         Reset the distribution counters to the unfilled state.
 *         """
 *         self.d1ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 37, __pyx_L1_error)
  __pyx_t_1->reset();

  /* "include/Dbn1D.pyx":31
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":40
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float weight=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_10fill, "Dbn1D.fill(self, x, weight=1.0, fraction=1.0)\n\n        (float x, float weight=1.0) -> None\n\n        Fills the distribution with the given weight at given x.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_11fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_10fill};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 40, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 40, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 40, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(10, 40, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_weight = values[1];
    __pyx_v_fraction = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 1, 3, __pyx_nargs); __PYX_ERR(10, 40, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_10fill(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_x, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_10fill(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Dbn1D.pyx":46
 *         Fills the distribution with the given weight at given x.
 *         """
 *         self.d1ptr().fill(x, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def scaleW(self, w):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 46, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 46, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 46, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 46, __pyx_L1_error)
  __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4);

  /* "include/Dbn1D.pyx":40
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float weight=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":48
 *         self.d1ptr().fill(x, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_12scaleW, "Dbn1D.scaleW(self, w)\n\n        (float) -> None\n\n        Scale the weights by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_13scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_12scaleW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 48, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(10, 48, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(10, 48, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_12scaleW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Dbn1D.pyx":54
 *         Scale the weights by the given factor.
 *         """
 *         self.d1ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 54, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 54, __pyx_L1_error)
  __pyx_t_1->scaleW(__pyx_t_2);

  /* "include/Dbn1D.pyx":48
 *         self.d1ptr().fill(x, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":56
 *         self.d1ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_14scaleX, "Dbn1D.scaleX(self, x)\n\n        (float) -> None\n\n        Scale the x dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_15scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_14scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(10, 56, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(10, 56, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(10, 56, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_14scaleX(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Dbn1D.pyx":62
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d1ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 62, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(10, 62, __pyx_L1_error)
  __pyx_t_1->scaleX(__pyx_t_2);

  /* "include/Dbn1D.pyx":56
 *         self.d1ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":66
 * 
 *     #@property
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_17xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_16xMean, "Dbn1D.xMean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_17xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_17xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_16xMean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_17xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_16xMean(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_16xMean(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/Dbn1D.pyx":68
 *     def xMean(self):
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 68, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 68, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":66
 * 
 *     #@property
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":71
 * 
 *     #@property
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_18xVariance, "Dbn1D.xVariance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_19xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_18xVariance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_18xVariance(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_18xVariance(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/Dbn1D.pyx":73
 *     def xVariance(self):
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 73, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 73, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":71
 * 
 *     #@property
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":76
 * 
 *     #@property
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_20xStdDev, "Dbn1D.xStdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_21xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_20xStdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_20xStdDev(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_20xStdDev(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/Dbn1D.pyx":78
 *     def xStdDev(self):
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 78, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 78, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":76
 * 
 *     #@property
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":81
 * 
 *     #@property
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_22xStdErr, "Dbn1D.xStdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_23xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_22xStdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_22xStdErr(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_22xStdErr(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/Dbn1D.pyx":83
 *     def xStdErr(self):
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 83, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 83, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":81
 * 
 *     #@property
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":86
 * 
 *     #@property
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_24xRMS, "Dbn1D.xRMS(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_25xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_24xRMS};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_24xRMS(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_24xRMS(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/Dbn1D.pyx":88
 *     def xRMS(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 88, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 88, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":86
 * 
 *     #@property
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":91
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_27numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_26numEntries, "Dbn1D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_27numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_27numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_26numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_27numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_26numEntries(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_26numEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  unsigned long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Dbn1D.pyx":93
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 93, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 93, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":91
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":96
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_29effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_28effNumEntries, "Dbn1D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_29effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_29effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_28effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_29effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_28effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_28effNumEntries(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Dbn1D.pyx":98
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 98, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->effNumEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 98, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":96
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":102
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_31errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_30errW, "Dbn1D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_31errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_31errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_30errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_31errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("errW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "errW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_30errW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_30errW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errW", 0);

  /* "include/Dbn1D.pyx":104
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d1ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 104, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->errW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 104, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":102
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.errW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":107
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_33relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_32relErrW, "Dbn1D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_33relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_33relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_32relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_33relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErrW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErrW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_32relErrW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_32relErrW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrW", 0);

  /* "include/Dbn1D.pyx":109
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 109, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErrW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 109, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":107
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.relErrW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":113
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_35sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_34sumW, "Dbn1D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_35sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_35sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_34sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_35sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_34sumW(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_34sumW(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Dbn1D.pyx":115
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 115, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 115, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":113
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":118
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_37sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_36sumW2, "Dbn1D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_37sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_37sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_36sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_37sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_36sumW2(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_36sumW2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Dbn1D.pyx":120
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 120, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 120, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":118
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":123
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_39sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_38sumWX, "Dbn1D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_39sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_39sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_38sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_39sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_38sumWX(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_38sumWX(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/Dbn1D.pyx":125
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 125, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 125, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":123
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":128
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_41sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_40sumWX2, "Dbn1D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_41sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_41sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_40sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_41sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_40sumWX2(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_40sumWX2(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/Dbn1D.pyx":130
 *     def sumWX2(self):
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 130, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(10, 130, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":128
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":133
 * 
 * 
 *     def __add__(Dbn1D self, Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) + deref(other.d1ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_43__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_43__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn1D, 1, "other", 0))) __PYX_ERR(10, 133, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_42__add__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_42__add__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  YODA::Dbn1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Dbn1D.pyx":134
 * 
 *     def __add__(Dbn1D self, Dbn1D other):
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) + deref(other.d1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Dbn1D self, Dbn1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 134, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 134, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D), new YODA::Dbn1D(((*__pyx_t_1) + (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":133
 * 
 * 
 *     def __add__(Dbn1D self, Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) + deref(other.d1ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn1D.pyx":136
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) + deref(other.d1ptr())))
 * 
 *     def __sub__(Dbn1D self, Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_45__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_45__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn1D, 1, "other", 0))) __PYX_ERR(10, 136, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_44__sub__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_44__sub__(struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn1D *__pyx_t_1;
  YODA::Dbn1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Dbn1D.pyx":137
 * 
 *     def __sub__(Dbn1D self, Dbn1D other):
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 137, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn1D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn1D *)NULL))) __PYX_ERR(10, 137, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D), new YODA::Dbn1D(((*__pyx_t_1) - (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(10, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn1D.pyx":136
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) + deref(other.d1ptr())))
 * 
 *     def __sub__(Dbn1D self, Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn1D, new c.Dbn1D(deref(self.d1ptr()) - deref(other.d1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_47__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_46__reduce_cython__, "Dbn1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_47__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_47__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_46__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_47__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_46__reduce_cython__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_46__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_49__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn1D_48__setstate_cython__, "Dbn1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn1D_49__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_49__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_48__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn1D_49__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn1D_48__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn1D_48__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":10
 *     """
 * 
 *     cdef c.Dbn2D* d2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn2D *> self.ptr()
 * 
 */

static YODA::Dbn2D *__pyx_f_4yoda_4core_5Dbn2D_d2ptr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  YODA::Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("d2ptr", 0);

  /* "include/Dbn2D.pyx":11
 * 
 *     cdef c.Dbn2D* d2ptr(self) except NULL:
 *         return <c.Dbn2D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     # TODO: remove!
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(11, 11, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":10
 *     """
 * 
 *     cdef c.Dbn2D* d2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn2D *> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.d2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":14
 * 
 *     # TODO: remove!
 *     cdef c.Dbn2D* _Dbn2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn2D *> self.ptr()
 * 
 */

static YODA::Dbn2D *__pyx_f_4yoda_4core_5Dbn2D__Dbn2D(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  YODA::Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Dbn2D", 0);

  /* "include/Dbn2D.pyx":15
 *     # TODO: remove!
 *     cdef c.Dbn2D* _Dbn2D(self) except NULL:
 *         return <c.Dbn2D *> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(11, 15, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":14
 * 
 *     # TODO: remove!
 *     cdef c.Dbn2D* _Dbn2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn2D *> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D._Dbn2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":17
 *         return <c.Dbn2D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn2D *p = self.d2ptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_5Dbn2D_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_5Dbn2D_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_5Dbn2D___dealloc__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_5Dbn2D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  YODA::Dbn2D *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Dbn2D.pyx":18
 * 
 *     def __dealloc__(self):
 *         cdef c.Dbn2D *p = self.d2ptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 18, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Dbn2D.pyx":19
 *     def __dealloc__(self):
 *         cdef c.Dbn2D *p = self.d2ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Dbn2D.pyx":20
 *         cdef c.Dbn2D *p = self.d2ptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/Dbn2D.pyx":19
 *     def __dealloc__(self):
 *         cdef c.Dbn2D *p = self.d2ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Dbn2D.pyx":17
 *         return <c.Dbn2D *> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn2D *p = self.d2ptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Dbn2D.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Dbn2D.pyx":23
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn2D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn2D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_2__init__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_5Dbn2D_2__init__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Dbn2D.pyx":24
 * 
 *     def __init__(self):
 *         cutil.set_owned_ptr(self, new c.Dbn2D())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn2D()); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Dbn2D.pyx":23
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Dbn2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_4__repr__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_v_mean = NULL;
  PyObject *__pyx_v_sd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Dbn2D.pyx":27
 * 
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return '<Dbn2D(mean=%s, stdDev=%s)>' % (mean, sd)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(11, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_mean = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn2D.pyx":28
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         return '<Dbn2D(mean=%s, stdDev=%s)>' % (mean, sd)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(11, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 28, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_sd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn2D.pyx":29
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return '<Dbn2D(mean=%s, stdDev=%s)>' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn2D_mean_s_stdDev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Dbn2D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mean);
  __Pyx_XDECREF(__pyx_v_sd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":32
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_6copy, "Dbn2D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_6copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_6copy(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_6copy(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Dbn2D.pyx":33
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 33, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), new YODA::Dbn2D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":32
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn2D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":35
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_8reset, "Dbn2D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_9reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_8reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_9reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_8reset(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_8reset(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Dbn2D.pyx":40
 * 
 *         Reset the distribution counters to the unfilled state."""
 *         self.d2ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 40, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 40, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":35
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":43
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, weight=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_10fill, "Dbn2D.fill(self, x, y, weight=1.0, fraction=1.0)\n\n        (x, y, weight=1.0) -> None\n\n        Fills the distribution with the given weight at given (x, y).\n\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_11fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_10fill};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_11fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_float_1_0);
    values[3] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 43, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 43, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(11, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 43, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(11, 43, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_weight = values[2];
    __pyx_v_fraction = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(11, 43, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_10fill(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_10fill(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Dbn2D.pyx":50
 * 
 *         """
 *         self.d2ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 50, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 50, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 50, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 50, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 50, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 50, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":43
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, weight=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":53
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_12scaleW, "Dbn2D.scaleW(self, w)\n\n        (float) -> None\n\n        Scale the weights by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_13scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_12scaleW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 53, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(11, 53, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(11, 53, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_12scaleW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Dbn2D.pyx":59
 *         Scale the weights by the given factor.
 *         """
 *         self.d2ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 59, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 59, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 59, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":53
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":61
 *         self.d2ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_14scaleX, "Dbn2D.scaleX(self, x)\n\n        (float) -> None\n\n        Scale the x dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_15scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_14scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 61, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(11, 61, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(11, 61, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_14scaleX(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Dbn2D.pyx":67
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d2ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, y):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 67, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 67, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 67, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":61
 *         self.d2ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":69
 *         self.d2ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_17scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_16scaleY, "Dbn2D.scaleY(self, y)\n\n        (float) -> None\n\n        Scale the y dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_17scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_17scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_16scaleY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_17scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 69, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(11, 69, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_y = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(11, 69, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_16scaleY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_16scaleY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Dbn2D.pyx":75
 *         Scale the y dimension by the given factor.
 *         """
 *         self.d2ptr().scaleY(y)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXY(self, x, y):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 75, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 75, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 75, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":69
 *         self.d2ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":77
 *         self.d2ptr().scaleY(y)
 * 
 *     def scaleXY(self, x, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_19scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_18scaleXY, "Dbn2D.scaleXY(self, x, y)\n\n        (float, float) -> None\n\n        Scale the x and y dimensions by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_19scaleXY = {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_19scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_18scaleXY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_19scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 77, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(11, 77, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleXY", 1, 2, 2, 1); __PYX_ERR(11, 77, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXY") < 0)) __PYX_ERR(11, 77, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXY", 1, 2, 2, __pyx_nargs); __PYX_ERR(11, 77, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_18scaleXY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_18scaleXY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXY", 0);

  /* "include/Dbn2D.pyx":83
 *         Scale the x and y dimensions by the given factors.
 *         """
 *         self.d2ptr().scaleXY(x, y)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 83, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 83, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(11, 83, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXY(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 83, __pyx_L1_error)
  }

  /* "include/Dbn2D.pyx":77
 *         self.d2ptr().scaleY(y)
 * 
 *     def scaleXY(self, x, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":89
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XY(self.d2ptr().xMean(), self.d2ptr().yMean())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_21mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_20mean, "Dbn2D.mean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_21mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_21mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_20mean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_21mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_20mean(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_20mean(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn2D *__pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mean", 0);

  /* "include/Dbn2D.pyx":91
 *     def mean(self):
 *         """Weighted mean of x"""
 *         return util.XY(self.d2ptr().xMean(), self.d2ptr().yMean())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 91, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 91, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 91, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 91, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":89
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XY(self.d2ptr().xMean(), self.d2ptr().yMean())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn2D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":94
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XY(self.d2ptr().xVariance(), self.d2ptr().yVariance())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_23variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_22variance, "Dbn2D.variance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_23variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_23variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_22variance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_23variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_22variance(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_22variance(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn2D *__pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variance", 0);

  /* "include/Dbn2D.pyx":96
 *     def variance(self):
 *         """Weighted variance of x"""
 *         return util.XY(self.d2ptr().xVariance(), self.d2ptr().yVariance())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 96, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 96, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 96, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 96, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":94
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XY(self.d2ptr().xVariance(), self.d2ptr().yVariance())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn2D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":99
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XY(self.d2ptr().xStdDev(), self.d2ptr().yStdDev())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_25stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_24stdDev, "Dbn2D.stdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_25stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_25stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_24stdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_25stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_24stdDev(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_24stdDev(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn2D *__pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdDev", 0);

  /* "include/Dbn2D.pyx":101
 *     def stdDev(self):
 *         """Weighted standard deviation of x"""
 *         return util.XY(self.d2ptr().xStdDev(), self.d2ptr().yStdDev())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 101, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 101, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 101, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 101, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":99
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XY(self.d2ptr().xStdDev(), self.d2ptr().yStdDev())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn2D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":104
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XY(self.d2ptr().xStdErr(), self.d2ptr().yStdErr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_27stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_26stdErr, "Dbn2D.stdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_27stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_27stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_26stdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_27stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_26stdErr(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_26stdErr(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn2D *__pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdErr", 0);

  /* "include/Dbn2D.pyx":106
 *     def stdErr(self):
 *         """Weighted standard error on <x>"""
 *         return util.XY(self.d2ptr().xStdErr(), self.d2ptr().yStdErr())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 106, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 106, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 106, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 106, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 106, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":104
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XY(self.d2ptr().xStdErr(), self.d2ptr().yStdErr())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn2D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":109
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XY(self.d2ptr().xRMS(), self.d2ptr().yRMS())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_29rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_28rms, "Dbn2D.rms(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_29rms = {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_29rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_28rms};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_29rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rms (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rms", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rms", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_28rms(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_28rms(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn2D *__pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rms", 0);

  /* "include/Dbn2D.pyx":111
 *     def rms(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XY(self.d2ptr().xRMS(), self.d2ptr().yRMS())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 111, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 111, __pyx_L1_error)
  }
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 111, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 111, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(11, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_7, __pyx_t_2, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(11, 111, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":109
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XY(self.d2ptr().xRMS(), self.d2ptr().yRMS())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn2D.rms", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":115
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_31numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_30numEntries, "Dbn2D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_31numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_31numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_30numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_31numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_30numEntries(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_30numEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  unsigned long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Dbn2D.pyx":117
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 117, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 117, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":115
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":120
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_33effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_32effNumEntries, "Dbn2D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_33effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_33effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_32effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_33effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_32effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_32effNumEntries(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Dbn2D.pyx":122
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 122, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->effNumEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 122, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":120
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":126
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_35errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_34errW, "Dbn2D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_35errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_35errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_34errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_35errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("errW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "errW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_34errW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_34errW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errW", 0);

  /* "include/Dbn2D.pyx":128
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d2ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 128, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->errW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 128, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":126
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.errW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":131
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_37relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_36relErrW, "Dbn2D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_37relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_37relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_36relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_37relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErrW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErrW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_36relErrW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_36relErrW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrW", 0);

  /* "include/Dbn2D.pyx":133
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 133, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErrW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 133, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":131
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.relErrW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":137
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_39sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_38sumW, "Dbn2D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_39sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_39sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_38sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_39sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_38sumW(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_38sumW(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Dbn2D.pyx":139
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 139, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 139, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":137
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":142
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_41sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_40sumW2, "Dbn2D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_41sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_41sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_40sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_41sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_40sumW2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_40sumW2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Dbn2D.pyx":144
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 144, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 144, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":142
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":147
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_43sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_42sumWX, "Dbn2D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_43sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_43sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_42sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_43sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_42sumWX(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_42sumWX(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/Dbn2D.pyx":149
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 149, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 149, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":147
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":152
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d2ptr().sumWY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_45sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_44sumWY, "Dbn2D.sumWY(self)\nsum(weights * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_45sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_45sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_44sumWY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_45sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_44sumWY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_44sumWY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY", 0);

  /* "include/Dbn2D.pyx":154
 *     def sumWY(self):
 *         """sum(weights * ys)"""
 *         return self.d2ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 154, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 154, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":152
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d2ptr().sumWY()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumWY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":157
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_47sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_46sumWX2, "Dbn2D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_47sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_47sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_46sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_47sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_46sumWX2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_46sumWX2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/Dbn2D.pyx":159
 *     def sumWX2(self):
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 159, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 159, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":157
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":162
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_49sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_48sumWY2, "Dbn2D.sumWY2(self)\nsum(weights * ys * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_49sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_49sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_48sumWY2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_49sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_48sumWY2(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_48sumWY2(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY2", 0);

  /* "include/Dbn2D.pyx":164
 *     def sumWY2(self):
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 164, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 164, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":162
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumWY2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":167
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights xs * ys)"""
 *         return self.d2ptr().sumWXY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_51sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_50sumWXY, "Dbn2D.sumWXY(self)\nsum(weights xs * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_51sumWXY = {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_51sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_50sumWXY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_51sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWXY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWXY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWXY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_50sumWXY(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_50sumWXY(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWXY", 0);

  /* "include/Dbn2D.pyx":169
 *     def sumWXY(self):
 *         """sum(weights xs * ys)"""
 *         return self.d2ptr().sumWXY()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 169, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWXY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(11, 169, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":167
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights xs * ys)"""
 *         return self.d2ptr().sumWXY()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.sumWXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":172
 * 
 * 
 *     def __add__(Dbn2D self, Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) + deref(other.d2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_53__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_53__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn2D, 1, "other", 0))) __PYX_ERR(11, 172, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_52__add__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_52__add__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  YODA::Dbn2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Dbn2D.pyx":173
 * 
 *     def __add__(Dbn2D self, Dbn2D other):
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) + deref(other.d2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Dbn2D self, Dbn2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 173, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 173, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), new YODA::Dbn2D(((*__pyx_t_1) + (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":172
 * 
 * 
 *     def __add__(Dbn2D self, Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) + deref(other.d2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn2D.pyx":175
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) + deref(other.d2ptr())))
 * 
 *     def __sub__(Dbn2D self, Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_55__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_55__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn2D, 1, "other", 0))) __PYX_ERR(11, 175, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_54__sub__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_54__sub__(struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn2D *__pyx_t_1;
  YODA::Dbn2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Dbn2D.pyx":176
 * 
 *     def __sub__(Dbn2D self, Dbn2D other):
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 176, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn2D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn2D *)NULL))) __PYX_ERR(11, 176, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), new YODA::Dbn2D(((*__pyx_t_1) - (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(11, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn2D.pyx":175
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) + deref(other.d2ptr())))
 * 
 *     def __sub__(Dbn2D self, Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr()) - deref(other.d2ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_57__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_56__reduce_cython__, "Dbn2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_57__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_57__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_56__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_57__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_56__reduce_cython__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_56__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_59__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn2D_58__setstate_cython__, "Dbn2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn2D_59__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_59__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_58__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn2D_59__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn2D_58__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn2D_58__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":9
 *     """
 * 
 *     cdef c.Dbn3D* d3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn3D*> self.ptr()
 * 
 */

static YODA::Dbn3D *__pyx_f_4yoda_4core_5Dbn3D_d3ptr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  YODA::Dbn3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("d3ptr", 0);

  /* "include/Dbn3D.pyx":10
 * 
 *     cdef c.Dbn3D* d3ptr(self) except NULL:
 *         return <c.Dbn3D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     # TODO: remove
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(12, 10, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":9
 *     """
 * 
 *     cdef c.Dbn3D* d3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn3D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.d3ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":13
 * 
 *     # TODO: remove
 *     cdef c.Dbn3D* _Dbn3D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn3D*> self.ptr()
 * 
 */

static YODA::Dbn3D *__pyx_f_4yoda_4core_5Dbn3D__Dbn3D(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  YODA::Dbn3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Dbn3D", 0);

  /* "include/Dbn3D.pyx":14
 *     # TODO: remove
 *     cdef c.Dbn3D* _Dbn3D(self) except NULL:
 *         return <c.Dbn3D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(12, 14, __pyx_L1_error)
  __pyx_r = ((YODA::Dbn3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":13
 * 
 *     # TODO: remove
 *     cdef c.Dbn3D* _Dbn3D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Dbn3D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D._Dbn3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":16
 *         return <c.Dbn3D*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn3D *p = self.d3ptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_5Dbn3D_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_5Dbn3D_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_5Dbn3D___dealloc__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_5Dbn3D___dealloc__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  YODA::Dbn3D *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Dbn3D.pyx":17
 * 
 *     def __dealloc__(self):
 *         cdef c.Dbn3D *p = self.d3ptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 17, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Dbn3D.pyx":18
 *     def __dealloc__(self):
 *         cdef c.Dbn3D *p = self.d3ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Dbn3D.pyx":19
 *         cdef c.Dbn3D *p = self.d3ptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/Dbn3D.pyx":18
 *     def __dealloc__(self):
 *         cdef c.Dbn3D *p = self.d3ptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Dbn3D.pyx":16
 *         return <c.Dbn3D*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Dbn3D *p = self.d3ptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Dbn3D.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Dbn3D.pyx":22
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_5Dbn3D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_5Dbn3D_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_2__init__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_5Dbn3D_2__init__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Dbn3D.pyx":23
 * 
 *     def __init__(self):
 *         cutil.set_owned_ptr(self, new c.Dbn3D())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), new YODA::Dbn3D()); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Dbn3D.pyx":22
 * 
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Dbn3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":25
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_4__repr__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_4__repr__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_v_mean = NULL;
  PyObject *__pyx_v_sd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Dbn3D.pyx":26
 * 
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return 'Dbn3D(mean=%s, stddev=%s)' % (mean, sd)
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(12, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 26, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_mean = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn3D.pyx":27
 *     def __repr__(self):
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None             # <<<<<<<<<<<<<<
 *         return 'Dbn3D(mean=%s, stddev=%s)' % (mean, sd)
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(12, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stdDev); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __Pyx_INCREF(Py_None);
    __pyx_t_1 = Py_None;
  }
  __pyx_v_sd = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Dbn3D.pyx":28
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 *         return 'Dbn3D(mean=%s, stddev=%s)' % (mean, sd)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_mean);
  __Pyx_GIVEREF(__pyx_v_mean);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_mean);
  __Pyx_INCREF(__pyx_v_sd);
  __Pyx_GIVEREF(__pyx_v_sd);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_sd);
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Dbn3D_mean_s_stddev_s, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":25
 *         cutil.set_owned_ptr(self, new c.Dbn3D())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         mean = self.mean if self.sumW > 0 else None
 *         sd = self.stdDev if self.sumW > 0 else None
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mean);
  __Pyx_XDECREF(__pyx_v_sd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":31
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_6copy, "Dbn3D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_7copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_6copy};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_7copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_6copy(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_6copy(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Dbn3D.pyx":32
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr())))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D), new YODA::Dbn3D((*__pyx_t_1))); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":31
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":35
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, z, weight=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_9fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_8fill, "Dbn3D.fill(self, x, y, z, weight=1.0, fraction=1.0)\n\n        (x, y, z, weight=1.0) -> None\n\n        Fills the distribution with the given weight at given (x, y).\n\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_9fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_9fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_8fill};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_9fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_z = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = ((PyObject *)__pyx_float_1_0);
    values[4] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 1); __PYX_ERR(12, 35, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 2); __PYX_ERR(12, 35, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 35, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(12, 35, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_z = values[2];
    __pyx_v_weight = values[3];
    __pyx_v_fraction = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, __pyx_nargs); __PYX_ERR(12, 35, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_8fill(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_8fill(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Dbn3D.pyx":42
 * 
 *         """
 *         self.d3ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def reset(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 42, __pyx_L1_error)
  __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6);

  /* "include/Dbn3D.pyx":35
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, z, weight=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":44
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_10reset, "Dbn3D.reset(self)\n\n        () -> None\n\n        Reset the distribution counters to the unfilled state.");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_11reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_10reset};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_10reset(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_10reset(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Dbn3D.pyx":49
 * 
 *         Reset the distribution counters to the unfilled state."""
 *         self.d3ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 49, __pyx_L1_error)
  __pyx_t_1->reset();

  /* "include/Dbn3D.pyx":44
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":52
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_12scaleW, "Dbn3D.scaleW(self, w)\n\n        (float) -> None\n\n        Scale the weights by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_13scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_12scaleW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_13scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 52, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(12, 52, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 52, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_12scaleW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_12scaleW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Dbn3D.pyx":58
 *         Scale the weights by the given factor.
 *         """
 *         self.d3ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scaleX(self, x):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 58, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 58, __pyx_L1_error)
  __pyx_t_1->scaleW(__pyx_t_2);

  /* "include/Dbn3D.pyx":52
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":60
 *         self.d3ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_14scaleX, "Dbn3D.scaleX(self, x)\n\n        (float) -> None\n\n        Scale the x dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_15scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_14scaleX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_15scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(12, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 60, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_14scaleX(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_14scaleX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Dbn3D.pyx":66
 *         Scale the x dimension by the given factor.
 *         """
 *         self.d3ptr().scaleX(x)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, y):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 66, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 66, __pyx_L1_error)
  __pyx_t_1->scaleX(__pyx_t_2);

  /* "include/Dbn3D.pyx":60
 *         self.d3ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":68
 *         self.d3ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_17scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_16scaleY, "Dbn3D.scaleY(self, y)\n\n        (float) -> None\n\n        Scale the y dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_17scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_17scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_16scaleY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_17scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 68, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(12, 68, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_y = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 68, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_16scaleY(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_16scaleY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Dbn3D.pyx":74
 *         Scale the y dimension by the given factor.
 *         """
 *         self.d3ptr().scaleY(y)             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, z):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 74, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 74, __pyx_L1_error)
  __pyx_t_1->scaleY(__pyx_t_2);

  /* "include/Dbn3D.pyx":68
 *         self.d3ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":76
 *         self.d3ptr().scaleY(y)
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_19scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_18scaleZ, "Dbn3D.scaleZ(self, z)\n\n        (float) -> None\n\n        Scale the z dimension by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_19scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_19scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_18scaleZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_19scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_z = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_z,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 76, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleZ") < 0)) __PYX_ERR(12, 76, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_z = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(12, 76, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_18scaleZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_z);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_18scaleZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_z) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleZ", 0);

  /* "include/Dbn3D.pyx":82
 *         Scale the z dimension by the given factor.
 *         """
 *         self.d3ptr().scaleZ(z)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXYZ(self, x, y, z):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 82, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 82, __pyx_L1_error)
  __pyx_t_1->scaleZ(__pyx_t_2);

  /* "include/Dbn3D.pyx":76
 *         self.d3ptr().scaleY(y)
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":84
 *         self.d3ptr().scaleZ(z)
 * 
 *     def scaleXYZ(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_21scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_20scaleXYZ, "Dbn3D.scaleXYZ(self, x, y, z)\n\n        (float, float, float) -> None\n\n        Scale the x, y and z dimensions by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_21scaleXYZ = {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_21scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_20scaleXYZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_21scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_z = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXYZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 84, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 84, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleXYZ", 1, 3, 3, 1); __PYX_ERR(12, 84, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(12, 84, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scaleXYZ", 1, 3, 3, 2); __PYX_ERR(12, 84, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXYZ") < 0)) __PYX_ERR(12, 84, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_z = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXYZ", 1, 3, 3, __pyx_nargs); __PYX_ERR(12, 84, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_20scaleXYZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_20scaleXYZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXYZ", 0);

  /* "include/Dbn3D.pyx":90
 *         Scale the x, y and z dimensions by the given factors.
 *         """
 *         self.d3ptr().scaleXYZ(x, y, z)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 90, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 90, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 90, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(12, 90, __pyx_L1_error)
  __pyx_t_1->scaleXYZ(__pyx_t_2, __pyx_t_3, __pyx_t_4);

  /* "include/Dbn3D.pyx":84
 *         self.d3ptr().scaleZ(z)
 * 
 *     def scaleXYZ(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":96
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_23mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_22mean, "Dbn3D.mean(self)\nWeighted mean of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_23mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_23mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_22mean};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_23mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_22mean(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_22mean(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mean", 0);

  /* "include/Dbn3D.pyx":98
 *     def mean(self):
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().yMean(),
 *                         self.d3ptr().zMean())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 98, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_4->xMean()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Dbn3D.pyx":99
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),
 *                         self.d3ptr().yMean(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().zMean())
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 99, __pyx_L1_error)
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4->yMean()); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Dbn3D.pyx":100
 *         return util.XYZ(self.d3ptr().xMean(),
 *                         self.d3ptr().yMean(),
 *                         self.d3ptr().zMean())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 100, __pyx_L1_error)
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_4->zMean()); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_2, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 98, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":96
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn3D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":103
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_25variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_24variance, "Dbn3D.variance(self)\nWeighted variance of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_25variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_25variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_24variance};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_25variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_24variance(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_24variance(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variance", 0);

  /* "include/Dbn3D.pyx":105
 *     def variance(self):
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().yVariance(),
 *                         self.d3ptr().zVariance())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 105, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_4->xVariance()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Dbn3D.pyx":106
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),
 *                         self.d3ptr().yVariance(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().zVariance())
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 106, __pyx_L1_error)
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4->yVariance()); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Dbn3D.pyx":107
 *         return util.XYZ(self.d3ptr().xVariance(),
 *                         self.d3ptr().yVariance(),
 *                         self.d3ptr().zVariance())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 107, __pyx_L1_error)
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_4->zVariance()); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_2, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":103
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn3D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":110
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_27stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_26stdDev, "Dbn3D.stdDev(self)\nWeighted standard deviation of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_27stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_27stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_26stdDev};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_27stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_26stdDev(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_26stdDev(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdDev", 0);

  /* "include/Dbn3D.pyx":112
 *     def stdDev(self):
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().yStdDev(),
 *                         self.d3ptr().zStdDev())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 112, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_4->xStdDev()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Dbn3D.pyx":113
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),
 *                         self.d3ptr().yStdDev(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().zStdDev())
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 113, __pyx_L1_error)
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4->yStdDev()); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Dbn3D.pyx":114
 *         return util.XYZ(self.d3ptr().xStdDev(),
 *                         self.d3ptr().yStdDev(),
 *                         self.d3ptr().zStdDev())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 114, __pyx_L1_error)
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_4->zStdDev()); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_2, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":110
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn3D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":117
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_29stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_28stdErr, "Dbn3D.stdErr(self)\nWeighted standard error on <x>");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_29stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_29stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_28stdErr};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_29stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_28stdErr(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_28stdErr(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdErr", 0);

  /* "include/Dbn3D.pyx":119
 *     def stdErr(self):
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().yStdErr(),
 *                         self.d3ptr().zStdErr())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 119, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_4->xStdErr()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Dbn3D.pyx":120
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),
 *                         self.d3ptr().yStdErr(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().zStdErr())
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 120, __pyx_L1_error)
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4->yStdErr()); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Dbn3D.pyx":121
 *         return util.XYZ(self.d3ptr().xStdErr(),
 *                         self.d3ptr().yStdErr(),
 *                         self.d3ptr().zStdErr())             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 121, __pyx_L1_error)
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_4->zStdErr()); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_2, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 119, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":117
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn3D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":124
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_31rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_30rms, "Dbn3D.rms(self)\nWeighted root mean squared (RMS) of x");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_31rms = {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_31rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_30rms};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_31rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rms (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rms", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rms", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_30rms(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_30rms(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Dbn3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rms", 0);

  /* "include/Dbn3D.pyx":126
 *     def rms(self):
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().yRMS(),
 *                         self.d3ptr().zRMS())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XYZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 126, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_4->xRMS()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Dbn3D.pyx":127
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),
 *                         self.d3ptr().yRMS(),             # <<<<<<<<<<<<<<
 *                         self.d3ptr().zRMS())
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 127, __pyx_L1_error)
  __pyx_t_5 = PyFloat_FromDouble(__pyx_t_4->yRMS()); if (unlikely(!__pyx_t_5)) __PYX_ERR(12, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Dbn3D.pyx":128
 *         return util.XYZ(self.d3ptr().xRMS(),
 *                         self.d3ptr().yRMS(),
 *                         self.d3ptr().zRMS())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 128, __pyx_L1_error)
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_4->zRMS()); if (unlikely(!__pyx_t_6)) __PYX_ERR(12, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_2, __pyx_t_5, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(12, 126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":124
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Dbn3D.rms", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":132
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_33numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_32numEntries, "Dbn3D.numEntries(self)\nThe number of entries");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_33numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_33numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_32numEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_33numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_32numEntries(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_32numEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Dbn3D.pyx":134
 *     def numEntries(self):
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 134, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_From_unsigned_long(__pyx_t_1->numEntries()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":132
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":137
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_35effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_34effNumEntries, "Dbn3D.effNumEntries(self)\nEffective number of entries (for weighted events)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_35effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_35effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_34effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_35effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_34effNumEntries(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_34effNumEntries(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Dbn3D.pyx":139
 *     def effNumEntries(self):
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 139, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->effNumEntries()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":137
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":143
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_37errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_36errW, "Dbn3D.errW(self)\nError on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_37errW = {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_37errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_36errW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_37errW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("errW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "errW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_36errW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_36errW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errW", 0);

  /* "include/Dbn3D.pyx":145
 *     def errW(self):
 *         """Error on sumW"""
 *         return self.d3ptr().errW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 145, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->errW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 145, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":143
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn3D.errW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":148
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_39relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_38relErrW, "Dbn3D.relErrW(self)\nRelative error on sumW");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_39relErrW = {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_39relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_38relErrW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_39relErrW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErrW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErrW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_38relErrW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_38relErrW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrW", 0);

  /* "include/Dbn3D.pyx":150
 *     def relErrW(self):
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 150, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErrW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(12, 150, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":148
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn3D.relErrW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":154
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_41sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_40sumW, "Dbn3D.sumW(self)\nsum(weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_41sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_41sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_40sumW};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_41sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_40sumW(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_40sumW(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Dbn3D.pyx":156
 *     def sumW(self):
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 156, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumW()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":154
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":159
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_43sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_42sumW2, "Dbn3D.sumW2(self)\nsum(weights * weights)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_43sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_43sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_42sumW2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_43sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_42sumW2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_42sumW2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Dbn3D.pyx":161
 *     def sumW2(self):
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 161, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumW2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":159
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":164
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_45sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_44sumWX, "Dbn3D.sumWX(self)\nsum(weights * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_45sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_45sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_44sumWX};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_45sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_44sumWX(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_44sumWX(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/Dbn3D.pyx":166
 *     def sumWX(self):
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 166, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWX()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":164
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":169
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d3ptr().sumWY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_47sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_46sumWY, "Dbn3D.sumWY(self)\nsum(weights * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_47sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_47sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_46sumWY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_47sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_46sumWY(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_46sumWY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY", 0);

  /* "include/Dbn3D.pyx":171
 *     def sumWY(self):
 *         """sum(weights * ys)"""
 *         return self.d3ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 171, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWY()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":169
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d3ptr().sumWY()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":174
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs)"""
 *         return self.d3ptr().sumWZ()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_49sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_48sumWZ, "Dbn3D.sumWZ(self)\nsum(weights * zs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_49sumWZ = {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_49sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_48sumWZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_49sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWZ", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWZ", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_48sumWZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_48sumWZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWZ", 0);

  /* "include/Dbn3D.pyx":176
 *     def sumWZ(self):
 *         """sum(weights * zs)"""
 *         return self.d3ptr().sumWZ()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 176, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWZ()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":174
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs)"""
 *         return self.d3ptr().sumWZ()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":179
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_51sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_50sumWX2, "Dbn3D.sumWX2(self)\nsum(weights * xs * xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_51sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_51sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_50sumWX2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_51sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_50sumWX2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_50sumWX2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/Dbn3D.pyx":181
 *     def sumWX2(self):
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 181, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWX2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":179
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":184
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_53sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_52sumWY2, "Dbn3D.sumWY2(self)\nsum(weights * ys * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_53sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_53sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_52sumWY2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_53sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_52sumWY2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_52sumWY2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY2", 0);

  /* "include/Dbn3D.pyx":186
 *     def sumWY2(self):
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 186, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWY2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":184
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWY2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":189
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_55sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_54sumWZ2, "Dbn3D.sumWZ2(self)\nsum(weights * zs * zs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_55sumWZ2 = {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_55sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_54sumWZ2};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_55sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWZ2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWZ2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_54sumWZ2(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_54sumWZ2(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWZ2", 0);

  /* "include/Dbn3D.pyx":191
 *     def sumWZ2(self):
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 191, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWZ2()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":189
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWZ2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":194
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * ys)"""
 *         return self.d3ptr().sumWXY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_57sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_56sumWXY, "Dbn3D.sumWXY(self)\nsum(weights * xs * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_57sumWXY = {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_57sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_56sumWXY};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_57sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWXY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWXY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWXY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_56sumWXY(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_56sumWXY(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWXY", 0);

  /* "include/Dbn3D.pyx":196
 *     def sumWXY(self):
 *         """sum(weights * xs * ys)"""
 *         return self.d3ptr().sumWXY()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 196, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWXY()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":194
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * ys)"""
 *         return self.d3ptr().sumWXY()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":199
 * 
 *     #@property
 *     def sumWXZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * zs)"""
 *         return self.d3ptr().sumWXZ()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_59sumWXZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_58sumWXZ, "Dbn3D.sumWXZ(self)\nsum(weights * xs * zs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_59sumWXZ = {"sumWXZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_59sumWXZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_58sumWXZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_59sumWXZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWXZ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWXZ", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWXZ", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_58sumWXZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_58sumWXZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWXZ", 0);

  /* "include/Dbn3D.pyx":201
 *     def sumWXZ(self):
 *         """sum(weights * xs * zs)"""
 *         return self.d3ptr().sumWXZ()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 201, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWXZ()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":199
 * 
 *     #@property
 *     def sumWXZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * zs)"""
 *         return self.d3ptr().sumWXZ()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWXZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":204
 * 
 *     #@property
 *     def sumWYZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * zs)"""
 *         return self.d3ptr().sumWYZ()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_61sumWYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_60sumWYZ, "Dbn3D.sumWYZ(self)\nsum(weights * ys * zs)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_61sumWYZ = {"sumWYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_61sumWYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_60sumWYZ};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_61sumWYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWYZ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWYZ", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWYZ", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_60sumWYZ(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_60sumWYZ(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWYZ", 0);

  /* "include/Dbn3D.pyx":206
 *     def sumWYZ(self):
 *         """sum(weights * ys * zs)"""
 *         return self.d3ptr().sumWYZ()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 206, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->sumWYZ()); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":204
 * 
 *     #@property
 *     def sumWYZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * zs)"""
 *         return self.d3ptr().sumWYZ()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Dbn3D.sumWYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":209
 * 
 * 
 *     def __add__(Dbn3D self, Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) + deref(other.d3ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_63__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_63__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn3D, 1, "other", 0))) __PYX_ERR(12, 209, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_62__add__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_62__add__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  YODA::Dbn3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Dbn3D.pyx":210
 * 
 *     def __add__(Dbn3D self, Dbn3D other):
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) + deref(other.d3ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Dbn3D self, Dbn3D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 210, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 210, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D), new YODA::Dbn3D(((*__pyx_t_1) + (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":209
 * 
 * 
 *     def __add__(Dbn3D self, Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) + deref(other.d3ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn3D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Dbn3D.pyx":212
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) + deref(other.d3ptr())))
 * 
 *     def __sub__(Dbn3D self, Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_65__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_65__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Dbn3D, 1, "other", 0))) __PYX_ERR(12, 212, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_64__sub__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_64__sub__(struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Dbn3D *__pyx_t_1;
  YODA::Dbn3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Dbn3D.pyx":213
 * 
 *     def __sub__(Dbn3D self, Dbn3D other):
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_self->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 213, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Dbn3D *)__pyx_v_other->__pyx_base.__pyx_vtab)->d3ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Dbn3D *)NULL))) __PYX_ERR(12, 213, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D), new YODA::Dbn3D(((*__pyx_t_1) - (*__pyx_t_2)))); if (unlikely(!__pyx_t_3)) __PYX_ERR(12, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Dbn3D.pyx":212
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) + deref(other.d3ptr())))
 * 
 *     def __sub__(Dbn3D self, Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr()) - deref(other.d3ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Dbn3D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_67__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_66__reduce_cython__, "Dbn3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_67__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_67__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_66__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_67__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_66__reduce_cython__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_66__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_69__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Dbn3D_68__setstate_cython__, "Dbn3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Dbn3D_69__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_69__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_68__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Dbn3D_69__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Dbn3D_68__setstate_cython__(((struct __pyx_obj_4yoda_4core_Dbn3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Dbn3D_68__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Dbn3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Dbn3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":12
 *     """
 * 
 *     cdef inline c.Counter* cptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Counter*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter_cptr(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  YODA::Counter *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cptr", 0);

  /* "include/Counter.pyx":13
 * 
 *     cdef inline c.Counter* cptr(self) except NULL:
 *         return <c.Counter*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.Counter* _Counter(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(13, 13, __pyx_L1_error)
  __pyx_r = ((YODA::Counter *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Counter.pyx":12
 *     """
 * 
 *     cdef inline c.Counter* cptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Counter*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.cptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":15
 *         return <c.Counter*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Counter* _Counter(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Counter*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Counter *__pyx_f_4yoda_4core_7Counter__Counter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  YODA::Counter *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Counter", 0);

  /* "include/Counter.pyx":16
 *     # TODO: remove
 *     cdef inline c.Counter* _Counter(self) except NULL:
 *         return <c.Counter*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(13, 16, __pyx_L1_error)
  __pyx_r = ((YODA::Counter *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Counter.pyx":15
 *         return <c.Counter*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Counter* _Counter(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Counter*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter._Counter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":19
 * 
 * 
 *     def __init__(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Counter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Counter_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 19, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 19, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(13, 19, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 19, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter___init__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Counter___init__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Counter *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Counter.pyx":20
 * 
 *     def __init__(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Counter.pyx":21
 *     def __init__(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 *                                                 <string>title))
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Counter.pyx":22
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,             # <<<<<<<<<<<<<<
 *                                                 <string>title))
 * 
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 22, __pyx_L1_error)

  /* "include/Counter.pyx":23
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,
 *                                                 <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 23, __pyx_L1_error)

  /* "include/Counter.pyx":22
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Counter(<string>path,             # <<<<<<<<<<<<<<
 *                                                 <string>title))
 * 
 */
  try {
    __pyx_t_3 = new YODA::Counter(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 22, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Counter.pyx":19
 * 
 * 
 *     def __init__(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Counter.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":26
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' sumw=%0.2g, err=%s>" % (self.__class__.__name__, self.path(), self.val(), self.err())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_2__repr__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_2__repr__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Counter.pyx":27
 * 
 *     def __repr__(self):
 *         return "<%s '%s' sumw=%0.2g, err=%s>" % (self.__class__.__name__, self.path(), self.val(), self.err())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_val); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_err); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_s_sumw_0_2g_err_s, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":26
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' sumw=%0.2g, err=%s>" % (self.__class__.__name__, self.path(), self.val(), self.err())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Counter.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":30
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_5reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_4reset, "Counter.reset(self)\nNone -> None.\n        Reset the counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_5reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_5reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_4reset};
static PyObject *__pyx_pw_4yoda_4core_7Counter_5reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_4reset(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_4reset(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Counter.pyx":33
 *         """None -> None.
 *         Reset the counter."""
 *         self.cptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 33, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 33, __pyx_L1_error)
  }

  /* "include/Counter.pyx":30
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the counter."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":36
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Couner.
 *         Clone this Counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_6clone, "Counter.clone(self)\nNone -> Couner.\n        Clone this Counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_7clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_6clone};
static PyObject *__pyx_pw_4yoda_4core_7Counter_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_6clone(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_6clone(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  YODA::Counter *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Counter.pyx":39
 *         """None -> Couner.
 *         Clone this Counter."""
 *         return cutil.new_owned_cls(Counter, self.cptr().newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 39, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 39, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Counter), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":36
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Couner.
 *         Clone this Counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":42
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_9fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_8fill, "Counter.fill(self, weight=1.0, fraction=1.0)\n([w]) -> None.\n        Fill with given optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_9fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_9fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_8fill};
static PyObject *__pyx_pw_4yoda_4core_7Counter_9fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 42, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 42, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(13, 42, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_weight = values[0];
    __pyx_v_fraction = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 0, 2, __pyx_nargs); __PYX_ERR(13, 42, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Counter.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_8fill(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_8fill(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Counter.pyx":45
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 *         self.cptr().fill(weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 45, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(13, 45, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(13, 45, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 45, __pyx_L1_error)
  }

  /* "include/Counter.pyx":42
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":49
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_11numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_10numEntries, "Counter.numEntries(self)\nNone -> float\n        Number of times this counter was filled.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_11numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_11numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_10numEntries};
static PyObject *__pyx_pw_4yoda_4core_7Counter_11numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_10numEntries(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_10numEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  unsigned long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Counter.pyx":52
 *         """None -> float
 *         Number of times this counter was filled."""
 *         return self.cptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 52, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 52, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":49
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":55
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_13effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_12effNumEntries, "Counter.effNumEntries(self)\nNone -> float\n        Effective number of times this counter was filled, computed from weights.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_13effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_13effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_12effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_7Counter_13effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_12effNumEntries(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_12effNumEntries(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Counter.pyx":58
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 *         return self.cptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 58, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->effNumEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 58, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":55
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":61
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_15sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_14sumW, "Counter.sumW(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_15sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_15sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_14sumW};
static PyObject *__pyx_pw_4yoda_4core_7Counter_15sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_14sumW(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_14sumW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Counter.pyx":64
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 64, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 64, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":61
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":67
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_17sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_16sumW2, "Counter.sumW2(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_17sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_17sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_16sumW2};
static PyObject *__pyx_pw_4yoda_4core_7Counter_17sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_16sumW2(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_16sumW2(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Counter.pyx":70
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().sumW2()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 70, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 70, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":67
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":73
 * 
 *     #@property
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_19val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_18val, "Counter.val(self)\n() -> float\n        Sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_19val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_19val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_18val};
static PyObject *__pyx_pw_4yoda_4core_7Counter_19val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("val", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "val", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_18val(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_18val(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("val", 0);

  /* "include/Counter.pyx":76
 *         """() -> float
 *         Sum of weights filled into this counter."""
 *         return self.cptr().val()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 76, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->val();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 76, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":73
 * 
 *     #@property
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":79
 * 
 *     #@property
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_21err(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_20err, "Counter.err(self)\n() -> float\n        Binomial uncertainty on the sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_21err = {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_21err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_20err};
static PyObject *__pyx_pw_4yoda_4core_7Counter_21err(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("err (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("err", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "err", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_20err(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_20err(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("err", 0);

  /* "include/Counter.pyx":82
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 *         return self.cptr().err()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 82, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->err();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 82, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":79
 * 
 *     #@property
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.err", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":85
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_23relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_22relErr, "Counter.relErr(self)\n() -> float\n        Relative binomial uncertainty on the sum of weights filled into this counter.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_23relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_23relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_22relErr};
static PyObject *__pyx_pw_4yoda_4core_7Counter_23relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_22relErr(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_22relErr(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErr", 0);

  /* "include/Counter.pyx":88
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 *         return self.cptr().relErr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 88, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 88, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(13, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":85
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.relErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":91
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_25scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_24scaleW, "Counter.scaleW(self, w)\n (float) -> None.\n        Rescale the weights in this counter by the factor w.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_25scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_25scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_24scaleW};
static PyObject *__pyx_pw_4yoda_4core_7Counter_25scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 91, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(13, 91, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(13, 91, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Counter.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_24scaleW(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_24scaleW(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Counter.pyx":94
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 *         self.cptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 94, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(13, 94, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 94, __pyx_L1_error)
  }

  /* "include/Counter.pyx":91
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":97
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_27mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_26mkScatter, "Counter.mkScatter(self)\nNone -> Scatter1D.\n        Convert this Counter to a Scatter1D, with x representing the value and error.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_27mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_27mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_26mkScatter};
static PyObject *__pyx_pw_4yoda_4core_7Counter_27mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mkScatter", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mkScatter", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_26mkScatter(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_26mkScatter(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  YODA::Scatter1D __pyx_v_s1;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  YODA::Scatter1D __pyx_t_2;
  YODA::Scatter1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Counter.pyx":100
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 *         cdef c.Scatter1D s1 = c.mkScatter_Counter(deref(self.cptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 100, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::mkScatter((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 100, __pyx_L1_error)
  }
  __pyx_v_s1 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Counter.pyx":101
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 *         cdef c.Scatter1D s1 = c.mkScatter_Counter(deref(self.cptr()))
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(self, Counter other, efficiency=False):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_3 = __pyx_v_s1.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 101, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(13, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":97
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Counter.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":103
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter1D s1
 *         if not efficiency:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_29divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_28divideBy, "Counter.divideBy(self, Counter other, efficiency=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_29divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_29divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_28divideBy};
static PyObject *__pyx_pw_4yoda_4core_7Counter_29divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,&__pyx_n_s_efficiency,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 103, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_efficiency);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(13, 103, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divideBy") < 0)) __PYX_ERR(13, 103, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Counter *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(13, 103, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Counter.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 103, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_28divideBy(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v_other, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_28divideBy(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other, PyObject *__pyx_v_efficiency) {
  YODA::Scatter1D __pyx_v_s1;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::Counter *__pyx_t_3;
  YODA::Counter *__pyx_t_4;
  YODA::Scatter1D __pyx_t_5;
  YODA::Scatter1D *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 0);

  /* "include/Counter.pyx":105
 *     def divideBy(self, Counter other, efficiency=False):
 *         cdef c.Scatter1D s1
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s1 = c.Counter_div_Counter(deref(self.cptr()), deref(other.cptr()))
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(13, 105, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "include/Counter.pyx":106
 *         cdef c.Scatter1D s1
 *         if not efficiency:
 *             s1 = c.Counter_div_Counter(deref(self.cptr()), deref(other.cptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             s1 = c.Counter_eff_Counter(deref(self.cptr()), deref(other.cptr()))
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 106, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_4 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 106, __pyx_L1_error)
    try {
      __pyx_t_5 = divide((*__pyx_t_3), (*__pyx_t_4));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(13, 106, __pyx_L1_error)
    }
    __pyx_v_s1 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);

    /* "include/Counter.pyx":105
 *     def divideBy(self, Counter other, efficiency=False):
 *         cdef c.Scatter1D s1
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s1 = c.Counter_div_Counter(deref(self.cptr()), deref(other.cptr()))
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Counter.pyx":108
 *             s1 = c.Counter_div_Counter(deref(self.cptr()), deref(other.cptr()))
 *         else:
 *             s1 = c.Counter_eff_Counter(deref(self.cptr()), deref(other.cptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 */
  /*else*/ {
    __pyx_t_4 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 108, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 108, __pyx_L1_error)
    try {
      __pyx_t_5 = efficiency((*__pyx_t_4), (*__pyx_t_3));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(13, 108, __pyx_L1_error)
    }
    __pyx_v_s1 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
  }
  __pyx_L3:;

  /* "include/Counter.pyx":109
 *         else:
 *             s1 = c.Counter_eff_Counter(deref(self.cptr()), deref(other.cptr()))
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_s1.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(13, 109, __pyx_L1_error)
  }
  __pyx_t_7 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(13, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":103
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter1D s1
 *         if not efficiency:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Counter.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":114
 *     ## In-place special methods
 * 
 *     def __iadd__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         c.Counter_iadd_Counter(self.cptr(), other.cptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_31__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_31__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 114, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_30__iadd__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_30__iadd__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  YODA::Counter *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/Counter.pyx":115
 * 
 *     def __iadd__(Counter self, Counter other):
 *         c.Counter_iadd_Counter(self.cptr(), other.cptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 115, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 115, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Counter.pyx":116
 *     def __iadd__(Counter self, Counter other):
 *         c.Counter_iadd_Counter(self.cptr(), other.cptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(Counter self, Counter other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Counter.pyx":114
 *     ## In-place special methods
 * 
 *     def __iadd__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         c.Counter_iadd_Counter(self.cptr(), other.cptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":118
 *         return self
 * 
 *     def __isub__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         c.Counter_isub_Counter(self.cptr(), other.cptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_33__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_33__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 118, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_32__isub__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_32__isub__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Counter *__pyx_t_1;
  YODA::Counter *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/Counter.pyx":119
 * 
 *     def __isub__(Counter self, Counter other):
 *         c.Counter_isub_Counter(self.cptr(), other.cptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 119, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 119, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Counter.pyx":120
 *     def __isub__(Counter self, Counter other):
 *         c.Counter_isub_Counter(self.cptr(), other.cptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Counter.pyx":118
 *         return self
 * 
 *     def __isub__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         c.Counter_isub_Counter(self.cptr(), other.cptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":125
 *     ## Unbound special methods
 * 
 *     def __add__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_add_Counter(self.cptr(), other.cptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_35__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_35__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 125, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_34__add__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_34__add__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Counter *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Counter *__pyx_t_2;
  YODA::Counter *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Counter.pyx":126
 * 
 *     def __add__(Counter self, Counter other):
 *         h = Counter()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Counter_add_Counter(self.cptr(), other.cptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Counter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Counter.pyx":127
 *     def __add__(Counter self, Counter other):
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_add_Counter(self.cptr(), other.cptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 127, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 127, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Counter.pyx":128
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_add_Counter(self.cptr(), other.cptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Counter self, Counter other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Counter.pyx":125
 *     ## Unbound special methods
 * 
 *     def __add__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_add_Counter(self.cptr(), other.cptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Counter.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":130
 *         return h
 * 
 *     def __sub__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_sub_Counter(self.cptr(), other.cptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_37__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_37__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_36__sub__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_36__sub__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Counter *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Counter *__pyx_t_2;
  YODA::Counter *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Counter.pyx":131
 * 
 *     def __sub__(Counter self, Counter other):
 *         h = Counter()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Counter_sub_Counter(self.cptr(), other.cptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Counter)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Counter.pyx":132
 *     def __sub__(Counter self, Counter other):
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_sub_Counter(self.cptr(), other.cptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 132, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Counter_cptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Counter *)NULL))) __PYX_ERR(13, 132, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Counter.pyx":133
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_sub_Counter(self.cptr(), other.cptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     def __div__(Counter self, Counter other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Counter.pyx":130
 *         return h
 * 
 *     def __sub__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         h = Counter()
 *         cutil.set_owned_ptr(h, c.Counter_sub_Counter(self.cptr(), other.cptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Counter.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Counter.pyx":135
 *         return h
 * 
 *     def __div__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pw_4yoda_4core_7Counter_39__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_39__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 135, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_38__div__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Counter_38__div__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 0);

  /* "include/Counter.pyx":136
 * 
 *     def __div__(Counter self, Counter other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Counter self, Counter other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":135
 *         return h
 * 
 *     def __div__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

/* "include/Counter.pyx":138
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_41__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Counter_41__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Counter, 1, "other", 0))) __PYX_ERR(13, 138, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_40__truediv__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_40__truediv__(struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, struct __pyx_obj_4yoda_4core_Counter *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 0);

  /* "include/Counter.pyx":139
 * 
 *     def __truediv__(Counter self, Counter other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(13, 139, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Counter.pyx":138
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Counter self, Counter other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Counter.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_43__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_42__reduce_cython__, "Counter.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_43__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_43__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_42__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Counter_43__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_42__reduce_cython__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_42__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Counter_45__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Counter_44__setstate_cython__, "Counter.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Counter_45__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_45__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_44__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Counter_45__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Counter_44__setstate_cython__(((struct __pyx_obj_4yoda_4core_Counter *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Counter_44__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Counter *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Counter.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":4
 * cdef class Bin(util.Base):
 * 
 *     cdef inline c.Bin* bptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Bin *__pyx_f_4yoda_4core_3Bin_bptr(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  YODA::Bin *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bptr", 0);

  /* "include/Bin.pyx":5
 * 
 *     cdef inline c.Bin* bptr(self) except NULL:
 *         return <c.Bin*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(14, 5, __pyx_L1_error)
  __pyx_r = ((YODA::Bin *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Bin.pyx":4
 * cdef class Bin(util.Base):
 * 
 *     cdef inline c.Bin* bptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin.bptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":7
 *         return <c.Bin*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Bin* p = self.bptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_3Bin_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_3Bin_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_3Bin___dealloc__(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_3Bin___dealloc__(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  YODA::Bin *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Bin.pyx":8
 * 
 *     def __dealloc__(self):
 *         cdef c.Bin* p = self.bptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 8, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Bin.pyx":9
 *     def __dealloc__(self):
 *         cdef c.Bin* p = self.bptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Bin.pyx":10
 *         cdef c.Bin* p = self.bptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/Bin.pyx":9
 *     def __dealloc__(self):
 *         cdef c.Bin* p = self.bptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Bin.pyx":7
 *         return <c.Bin*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Bin* p = self.bptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Bin.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Bin.pyx":14
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 *         Dimension of the fill space (should match containing Histo/Profile)"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_3dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_2dim, "Bin.dim(self)\nNone -> int\n        Dimension of the fill space (should match containing Histo/Profile)");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_3dim = {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_3dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_2dim};
static PyObject *__pyx_pw_4yoda_4core_3Bin_3dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dim (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("dim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "dim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_2dim(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_2dim(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dim", 0);

  /* "include/Bin.pyx":17
 *         """None -> int
 *         Dimension of the fill space (should match containing Histo/Profile)"""
 *         return self.bptr().dim()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 17, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->dim();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 17, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Bin.pyx":14
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 *         Dimension of the fill space (should match containing Histo/Profile)"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin.dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":21
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The number of entries that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_5numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_4numEntries, "Bin.numEntries(self)\n\n        The number of entries that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_5numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_5numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_4numEntries};
static PyObject *__pyx_pw_4yoda_4core_3Bin_5numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_4numEntries(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_4numEntries(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  unsigned long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Bin.pyx":25
 *         The number of entries that have filled the bin.
 *         """
 *         return self.bptr().numEntries()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 25, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 25, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Bin.pyx":21
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The number of entries that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":28
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The effective number of entries in the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_7effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_6effNumEntries, "Bin.effNumEntries(self)\n\n        The effective number of entries in the bin.\n\n        s.effNumEntries <==> (s.sumW ** 2) / s.sumW2\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_7effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_7effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_6effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_3Bin_7effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("effNumEntries", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "effNumEntries", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_6effNumEntries(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_6effNumEntries(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Bin.pyx":34
 *         s.effNumEntries <==> (s.sumW ** 2) / s.sumW2
 *         """
 *         return self.bptr().effNumEntries()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 34, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->effNumEntries();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 34, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Bin.pyx":28
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The effective number of entries in the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":38
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights: sum(weights).
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_9sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_8sumW, "Bin.sumW(self)\n\n        The sum of weights: sum(weights).\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_9sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_9sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_8sumW};
static PyObject *__pyx_pw_4yoda_4core_3Bin_9sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_8sumW(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_8sumW(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Bin.pyx":42
 *         The sum of weights: sum(weights).
 *         """
 *         return self.bptr().sumW()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 42, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 42, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Bin.pyx":38
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights: sum(weights).
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Bin.pyx":45
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-squared: sum(weights * weights)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_11sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_10sumW2, "Bin.sumW2(self)\n\n        The sum of weights-squared: sum(weights * weights)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_11sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_11sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_10sumW2};
static PyObject *__pyx_pw_4yoda_4core_3Bin_11sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumW2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumW2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_10sumW2(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_10sumW2(struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Bin *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Bin.pyx":49
 *         The sum of weights-squared: sum(weights * weights)
 *         """
 *         return self.bptr().sumW2()             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_3Bin_bptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Bin *)NULL))) __PYX_ERR(14, 49, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumW2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(14, 49, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(14, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Bin.pyx":45
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-squared: sum(weights * weights)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_12__reduce_cython__, "Bin.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_12__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_3Bin_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_12__reduce_cython__(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_3Bin_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_3Bin_14__setstate_cython__, "Bin.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_3Bin_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_14__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_3Bin_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_3Bin_14__setstate_cython__(((struct __pyx_obj_4yoda_4core_Bin *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_3Bin_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":16
 *     """
 * 
 *     cdef inline c.Bin1D_Dbn1D* b1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("b1ptr", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":17
 * 
 *     cdef inline c.Bin1D_Dbn1D* b1ptr(self) except NULL:
 *         return <c.Bin1D_Dbn1D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn1D* _Bin1D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(15, 17, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":16
 *     """
 * 
 *     cdef inline c.Bin1D_Dbn1D* b1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.b1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":19
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn1D* _Bin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 * 
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_f_4yoda_4core_11Bin1D_Dbn1D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Bin1D", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":20
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn1D* _Bin1D(self) except NULL:
 *         return <c.Bin1D_Dbn1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(15, 20, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":19
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn1D* _Bin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D._Bin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":23
 * 
 * 
 *     def __init__(self, xlow, xhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn1D(pair[double, double](xlow, xhigh)))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 23, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(15, 23, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(15, 23, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(15, 23, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D___init__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_11Bin1D_Dbn1D___init__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":24
 * 
 *     def __init__(self, xlow, xhigh):
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn1D(pair[double, double](xlow, xhigh)))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(15, 24, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(15, 24, __pyx_L1_error)
  try {
    __pyx_t_3 = std::pair<double,double> (__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(15, 24, __pyx_L1_error)
  }
  try {
    __pyx_t_4 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn1D(__pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 24, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(15, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/Bin1D_Dbn1D.pyx":23
 * 
 * 
 *     def __init__(self, xlow, xhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn1D(pair[double, double](xlow, xhigh)))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn1D(pair[double, double](xlow, xhigh)))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_2__repr__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_2__repr__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":27
 * 
 *     def __repr__(self):
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_x_g_g, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn1D(pair[double, double](xlow, xhigh)))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_4xEdges, "Bin1D_Dbn1D.xEdges(self)\nThe lower and upper edges.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_5xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_4xEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_4xEdges(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_4xEdges(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":47
 *     def xEdges(self):
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_7xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_6xMin, "Bin1D_Dbn1D.xMin(self)\nThe lower bin edge.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_7xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_7xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_6xMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_7xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_6xMin(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_6xMin(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":51
 *     def xMin(self):
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 51, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 51, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_9xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_8xMax, "Bin1D_Dbn1D.xMax(self)\nThe upper bin edge.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_9xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_9xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_8xMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_9xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_8xMax(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_8xMax(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":55
 *     def xMax(self):
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 55, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 55, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_11xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_10xMid, "Bin1D_Dbn1D.xMid(self)\nThe midpoint of the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_11xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_11xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_10xMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_11xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_10xMid(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_10xMid(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":59
 *     def xMid(self):
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()             # <<<<<<<<<<<<<<
 * 
 *     def xWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 59, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 59, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_13xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_12xWidth, "Bin1D_Dbn1D.xWidth(self)\nThe width of the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_13xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_13xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_12xWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_13xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_12xWidth(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_12xWidth(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":63
 *     def xWidth(self):
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()             # <<<<<<<<<<<<<<
 * 
 *     def xMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 63, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 63, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_15xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_14xMean, "Bin1D_Dbn1D.xMean(self)\nThe mean of the x-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_15xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_15xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_14xMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_15xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_14xMean(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_14xMean(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":67
 *     def xMean(self):
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def xFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 67, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 67, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_17xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_16xFocus, "Bin1D_Dbn1D.xFocus(self)\n\n        The focus of the bin. If the bin has been filled, then this\n        is the mean fill on this bin. If the bin has not been filled,\n        then the focus is the midpoint of the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_17xFocus = {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_17xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_16xFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_17xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_16xFocus(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_16xFocus(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFocus", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":75
 *         then the focus is the midpoint of the bin.
 *         """
 *         return self.b1ptr().xFocus()             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 75, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 75, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_18xVariance, "Bin1D_Dbn1D.xVariance(self)\n\n        The variance of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_19xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_18xVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_18xVariance(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_18xVariance(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":81
 *         The variance of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 81, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 81, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_20xStdDev, "Bin1D_Dbn1D.xStdDev(self)\n\n        The standard deviation of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_21xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_20xStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_20xStdDev(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_20xStdDev(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":87
 *         The standard deviation of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 87, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 87, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_22xStdErr, "Bin1D_Dbn1D.xStdErr(self)\n\n        The standard error of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_23xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_22xStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_22xStdErr(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_22xStdErr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":93
 *         The standard error of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 93, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 93, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_24xRMS, "Bin1D_Dbn1D.xRMS(self)\n\n        The root-mean-square of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_25xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_24xRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_24xRMS(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_24xRMS(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":99
 *         The root-mean-square of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 99, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 99, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_27sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_26sumWX, "Bin1D_Dbn1D.sumWX(self)\n\n        The sum of weights-times-x: sum(weights * x)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_27sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_27sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_26sumWX};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_27sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_26sumWX(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_26sumWX(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":107
 *         The sum of weights-times-x: sum(weights * x)
 *         """
 *         return self.b1ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 107, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 107, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_29sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_28sumWX2, "Bin1D_Dbn1D.sumWX2(self)\n\n        The sum of weights-times-x-squared: sum(weights * x * x)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_29sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_29sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_28sumWX2};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_29sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_28sumWX2(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_28sumWX2(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":113
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 *         """
 *         return self.b1ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     def merge(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 113, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 113, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(15, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn1D. Merge this bin with another of the
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_31merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_30merge, "Bin1D_Dbn1D.merge(self, Bin1D_Dbn1D other)\n\n        merge(other) -> Bin1D_Dbn1D. Merge this bin with another of the\n        same type. Only directly adjacent bins, i.e. those sharing a\n        common edge, can be merged.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_31merge = {"merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_31merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_30merge};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_31merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("merge (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(15, 115, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "merge") < 0)) __PYX_ERR(15, 115, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("merge", 1, 1, 1, __pyx_nargs); __PYX_ERR(15, 115, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn1D, 1, "other", 0))) __PYX_ERR(15, 115, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_30merge(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_30merge(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("merge", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":121
 *         common edge, can be merged.
 *         """
 *         self.b1ptr().merge(deref(other.b1ptr()))             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 121, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 121, __pyx_L1_error)
  try {
    __pyx_t_1->merge((*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 121, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn1D.pyx":122
 *         """
 *         self.b1ptr().merge(deref(other.b1ptr()))
 *         return self             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn1D. Merge this bin with another of the
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":126
 * 
 * 
 *     def __add__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_33__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_33__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn1D, 1, "other", 0))) __PYX_ERR(15, 126, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_32__add__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_32__add__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":127
 * 
 *     def __add__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin1D_Dbn1D.pyx":128
 *     def __add__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 128, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 128, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn1D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 128, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn1D.pyx":127
 * 
 *     def __add__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":126
 * 
 * 
 *     def __add__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn1D.pyx":130
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_35__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_35__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn1D, 1, "other", 0))) __PYX_ERR(15, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_34__sub__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_34__sub__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/generated/Bin1D_Dbn1D.pyx":131
 * 
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin1D_Dbn1D.pyx":132
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) - deref(other.b1ptr())))             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 132, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *)NULL))) __PYX_ERR(15, 132, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn1D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(15, 132, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn1D.pyx":131
 * 
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(15, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn1D.pyx":130
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 *     def __sub__(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn1D,
 *                                    new c.Bin1D_Dbn1D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__, "Bin1D_Dbn1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__, "Bin1D_Dbn1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":16
 *     """
 * 
 *     cdef inline c.Bin1D_Dbn2D* b1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("b1ptr", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":17
 * 
 *     cdef inline c.Bin1D_Dbn2D* b1ptr(self) except NULL:
 *         return <c.Bin1D_Dbn2D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn2D* _Bin1D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(16, 17, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":16
 *     """
 * 
 *     cdef inline c.Bin1D_Dbn2D* b1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.b1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":19
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn2D* _Bin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 * 
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_f_4yoda_4core_11Bin1D_Dbn2D__Bin1D(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Bin1D", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":20
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn2D* _Bin1D(self) except NULL:
 *         return <c.Bin1D_Dbn2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(16, 20, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":19
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin1D_Dbn2D* _Bin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin1D_Dbn2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D._Bin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":23
 * 
 * 
 *     def __init__(self, xlow, xhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn2D(pair[double, double](xlow, xhigh)))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 23, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 23, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(16, 23, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(16, 23, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(16, 23, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D___init__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_11Bin1D_Dbn2D___init__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":24
 * 
 *     def __init__(self, xlow, xhigh):
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn2D(pair[double, double](xlow, xhigh)))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(16, 24, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(16, 24, __pyx_L1_error)
  try {
    __pyx_t_3 = std::pair<double,double> (__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(16, 24, __pyx_L1_error)
  }
  try {
    __pyx_t_4 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn2D(__pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 24, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(16, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "include/generated/Bin1D_Dbn2D.pyx":23
 * 
 * 
 *     def __init__(self, xlow, xhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn2D(pair[double, double](xlow, xhigh)))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn2D(pair[double, double](xlow, xhigh)))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_2__repr__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_2__repr__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":27
 * 
 *     def __repr__(self):
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 27, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_x_g_g, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":26
 *         cutil.set_owned_ptr(self, new c.Bin1D_Dbn2D(pair[double, double](xlow, xhigh)))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_4xEdges, "Bin1D_Dbn2D.xEdges(self)\nThe lower and upper edges.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_5xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_4xEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_4xEdges(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_4xEdges(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":47
 *     def xEdges(self):
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 47, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_7xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_6xMin, "Bin1D_Dbn2D.xMin(self)\nThe lower bin edge.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_7xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_7xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_6xMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_7xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_6xMin(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_6xMin(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":51
 *     def xMin(self):
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 51, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 51, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_9xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_8xMax, "Bin1D_Dbn2D.xMax(self)\nThe upper bin edge.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_9xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_9xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_8xMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_9xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_8xMax(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_8xMax(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":55
 *     def xMax(self):
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 55, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 55, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_11xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_10xMid, "Bin1D_Dbn2D.xMid(self)\nThe midpoint of the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_11xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_11xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_10xMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_11xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_10xMid(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_10xMid(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":59
 *     def xMid(self):
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()             # <<<<<<<<<<<<<<
 * 
 *     def xWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 59, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 59, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_13xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_12xWidth, "Bin1D_Dbn2D.xWidth(self)\nThe width of the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_13xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_13xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_12xWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_13xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_12xWidth(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_12xWidth(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":63
 *     def xWidth(self):
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()             # <<<<<<<<<<<<<<
 * 
 *     def xMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 63, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 63, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_15xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_14xMean, "Bin1D_Dbn2D.xMean(self)\nThe mean of the x-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_15xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_15xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_14xMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_15xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_14xMean(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_14xMean(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":67
 *     def xMean(self):
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def xFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 67, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 67, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_17xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_16xFocus, "Bin1D_Dbn2D.xFocus(self)\n\n        The focus of the bin. If the bin has been filled, then this\n        is the mean fill on this bin. If the bin has not been filled,\n        then the focus is the midpoint of the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_17xFocus = {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_17xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_16xFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_17xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_16xFocus(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_16xFocus(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFocus", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":75
 *         then the focus is the midpoint of the bin.
 *         """
 *         return self.b1ptr().xFocus()             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 75, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 75, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_18xVariance, "Bin1D_Dbn2D.xVariance(self)\n\n        The variance of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_19xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_18xVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_19xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_18xVariance(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_18xVariance(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":81
 *         The variance of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 81, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 81, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_20xStdDev, "Bin1D_Dbn2D.xStdDev(self)\n\n        The standard deviation of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_21xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_20xStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_21xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_20xStdDev(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_20xStdDev(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":87
 *         The standard deviation of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 87, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 87, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_22xStdErr, "Bin1D_Dbn2D.xStdErr(self)\n\n        The standard error of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_23xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_22xStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_23xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_22xStdErr(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_22xStdErr(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":93
 *         The standard error of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 93, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 93, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_24xRMS, "Bin1D_Dbn2D.xRMS(self)\n\n        The root-mean-square of the x-values that have filled the bin.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_25xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_24xRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_25xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_24xRMS(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_24xRMS(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":99
 *         The root-mean-square of the x-values that have filled the bin.
 *         """
 *         return self.b1ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 99, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 99, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_27sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_26sumWX, "Bin1D_Dbn2D.sumWX(self)\n\n        The sum of weights-times-x: sum(weights * x)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_27sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_27sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_26sumWX};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_27sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_26sumWX(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_26sumWX(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":107
 *         The sum of weights-times-x: sum(weights * x)
 *         """
 *         return self.b1ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 107, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 107, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_29sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_28sumWX2, "Bin1D_Dbn2D.sumWX2(self)\n\n        The sum of weights-times-x-squared: sum(weights * x * x)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_29sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_29sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_28sumWX2};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_29sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_28sumWX2(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_28sumWX2(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":113
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 *         """
 *         return self.b1ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     def merge(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 113, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 113, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(16, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn2D. Merge this bin with another of the
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_31merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_30merge, "Bin1D_Dbn2D.merge(self, Bin1D_Dbn2D other)\n\n        merge(other) -> Bin1D_Dbn2D. Merge this bin with another of the\n        same type. Only directly adjacent bins, i.e. those sharing a\n        common edge, can be merged.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_31merge = {"merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_31merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_30merge};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_31merge(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("merge (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(16, 115, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "merge") < 0)) __PYX_ERR(16, 115, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("merge", 1, 1, 1, __pyx_nargs); __PYX_ERR(16, 115, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn2D, 1, "other", 0))) __PYX_ERR(16, 115, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_30merge(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_30merge(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("merge", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":121
 *         common edge, can be merged.
 *         """
 *         self.b1ptr().merge(deref(other.b1ptr()))             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 121, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 121, __pyx_L1_error)
  try {
    __pyx_t_1->merge((*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 121, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn2D.pyx":122
 *         """
 *         self.b1ptr().merge(deref(other.b1ptr()))
 *         return self             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn2D. Merge this bin with another of the
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.merge", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":126
 * 
 * 
 *     def __add__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_33__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_33__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn2D, 1, "other", 0))) __PYX_ERR(16, 126, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_32__add__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_32__add__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":127
 * 
 *     def __add__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin1D_Dbn2D.pyx":128
 *     def __add__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 128, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 128, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn2D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 128, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn2D.pyx":127
 * 
 *     def __add__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":126
 * 
 * 
 *     def __add__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin1D_Dbn2D.pyx":130
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_35__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_35__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin1D_Dbn2D, 1, "other", 0))) __PYX_ERR(16, 130, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_34__sub__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_34__sub__(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin1D_Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/generated/Bin1D_Dbn2D.pyx":131
 * 
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin1D_Dbn2D.pyx":132
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) - deref(other.b1ptr())))             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 132, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *)NULL))) __PYX_ERR(16, 132, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin1D_Dbn2D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(16, 132, __pyx_L1_error)
  }

  /* "include/generated/Bin1D_Dbn2D.pyx":131
 * 
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,             # <<<<<<<<<<<<<<
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(16, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin1D_Dbn2D.pyx":130
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) + deref(other.b1ptr())))
 * 
 *     def __sub__(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Bin1D_Dbn2D,
 *                                    new c.Bin1D_Dbn2D(deref(self.b1ptr()) - deref(other.b1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__, "Bin1D_Dbn2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__, "Bin1D_Dbn2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__(((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin1D_Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":3
 * cdef class HistoBin1D(Bin1D_Dbn1D):
 * 
 *     cdef inline c.HistoBin1D* hb1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin1D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  YODA::HistoBin1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hb1ptr", 0);

  /* "include/HistoBin1D.pyx":4
 * 
 *     cdef inline c.HistoBin1D* hb1ptr(self) except NULL:
 *         return <c.HistoBin1D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.HistoBin1D* _HistoBin1D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(17, 4, __pyx_L1_error)
  __pyx_r = ((YODA::HistoBin1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":3
 * cdef class HistoBin1D(Bin1D_Dbn1D):
 * 
 *     cdef inline c.HistoBin1D* hb1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin1D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.hb1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":6
 *         return <c.HistoBin1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.HistoBin1D* _HistoBin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin1D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::HistoBin1D *__pyx_f_4yoda_4core_10HistoBin1D__HistoBin1D(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  YODA::HistoBin1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_HistoBin1D", 0);

  /* "include/HistoBin1D.pyx":7
 *     # TODO: remove
 *     cdef inline c.HistoBin1D* _HistoBin1D(self) except NULL:
 *         return <c.HistoBin1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(17, 7, __pyx_L1_error)
  __pyx_r = ((YODA::HistoBin1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":6
 *         return <c.HistoBin1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.HistoBin1D* _HistoBin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D._HistoBin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":10
 * 
 * 
 *     def __init__(self, double a, double b):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.HistoBin1D(a, b))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_10HistoBin1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_10HistoBin1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  double __pyx_v_a;
  double __pyx_v_b;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 10, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_b)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(17, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(17, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(17, 10, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    }
    __pyx_v_a = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_a == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 10, __pyx_L3_error)
    __pyx_v_b = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_b == (double)-1) && PyErr_Occurred())) __PYX_ERR(17, 10, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(17, 10, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D___init__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self), __pyx_v_a, __pyx_v_b);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_10HistoBin1D___init__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, double __pyx_v_a, double __pyx_v_b) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/HistoBin1D.pyx":11
 * 
 *     def __init__(self, double a, double b):
 *         cutil.set_owned_ptr(self, new c.HistoBin1D(a, b))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  try {
    __pyx_t_1 = new YODA::HistoBin1D(__pyx_v_a, __pyx_v_b);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 11, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/HistoBin1D.pyx":10
 * 
 * 
 *     def __init__(self, double a, double b):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.HistoBin1D(a, b))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":30
 * 
 *     #@property
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.area <==> b.sumW
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_3area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_2area, "HistoBin1D.area(self)\n\n        b.area <==> b.sumW\n\n        The area of the bin is the sum of weights of the bin; it is\n        independent of width.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_3area = {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_3area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_2area};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_3area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("area (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("area", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "area", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_2area(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_2area(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("area", 0);

  /* "include/HistoBin1D.pyx":37
 *         independent of width.
 *         """
 *         return self.hb1ptr().area()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 37, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->area();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 37, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":30
 * 
 *     #@property
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.area <==> b.sumW
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.area", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":40
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.height <==> b.area / b.width
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_5height(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_4height, "HistoBin1D.height(self)\n\n        b.height <==> b.area / b.width\n\n        The height of the bin is defined as the area divided by the\n        width.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_5height = {"height", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_5height, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_4height};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_5height(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("height (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("height", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "height", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_4height(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_4height(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("height", 0);

  /* "include/HistoBin1D.pyx":47
 *         width.
 *         """
 *         return self.hb1ptr().height()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 47, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->height();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 47, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":40
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.height <==> b.area / b.width
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.height", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":50
 * 
 *     #@property
 *     def areaErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error computed using binomial statistics on squared sum of bin
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_7areaErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_6areaErr, "HistoBin1D.areaErr(self)\n\n        Error computed using binomial statistics on squared sum of bin\n        weights, i.e. s.areaErr = sqrt(s.sumW2)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_7areaErr = {"areaErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_7areaErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_6areaErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_7areaErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areaErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("areaErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "areaErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_6areaErr(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_6areaErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areaErr", 0);

  /* "include/HistoBin1D.pyx":55
 *         weights, i.e. s.areaErr = sqrt(s.sumW2)
 *         """
 *         return self.hb1ptr().areaErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 55, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->areaErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 55, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":50
 * 
 *     #@property
 *     def areaErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error computed using binomial statistics on squared sum of bin
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.areaErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":58
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Height error - scales the s.areaError by the reciprocal of the
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_9heightErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_8heightErr, "HistoBin1D.heightErr(self)\n\n        Height error - scales the s.areaError by the reciprocal of the\n        bin width.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_9heightErr = {"heightErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_9heightErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_8heightErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_9heightErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heightErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("heightErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "heightErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_8heightErr(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_8heightErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heightErr", 0);

  /* "include/HistoBin1D.pyx":63
 *         bin width.
 *         """
 *         return self.hb1ptr().heightErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 63, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->heightErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 63, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":58
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Height error - scales the s.areaError by the reciprocal of the
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.heightErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":66
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Relative error - same for either area or height interpretations.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_11relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_10relErr, "HistoBin1D.relErr(self)\n\n        Relative error - same for either area or height interpretations.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_11relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_11relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_10relErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_11relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_10relErr(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_10relErr(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErr", 0);

  /* "include/HistoBin1D.pyx":70
 *         Relative error - same for either area or height interpretations.
 *         """
 *         return self.hb1ptr().relErr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 70, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 70, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":66
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Relative error - same for either area or height interpretations.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.relErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":74
 * 
 * 
 *     def __iadd__(HistoBin1D self, HistoBin1D other):             # <<<<<<<<<<<<<<
 *         c.HistoBin1D_iadd_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_13__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_13__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_HistoBin1D, 1, "other", 0))) __PYX_ERR(17, 74, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_12__iadd__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_12__iadd__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  YODA::HistoBin1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/HistoBin1D.pyx":75
 * 
 *     def __iadd__(HistoBin1D self, HistoBin1D other):
 *         c.HistoBin1D_iadd_HistoBin1D(self.hb1ptr(), other.hb1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 75, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 75, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/HistoBin1D.pyx":76
 *     def __iadd__(HistoBin1D self, HistoBin1D other):
 *         c.HistoBin1D_iadd_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(HistoBin1D self, HistoBin1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":74
 * 
 * 
 *     def __iadd__(HistoBin1D self, HistoBin1D other):             # <<<<<<<<<<<<<<
 *         c.HistoBin1D_iadd_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":78
 *         return self
 * 
 *     def __isub__(HistoBin1D self, HistoBin1D other):             # <<<<<<<<<<<<<<
 *         c.HistoBin1D_isub_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_15__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_15__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_HistoBin1D, 1, "other", 0))) __PYX_ERR(17, 78, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_14__isub__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_14__isub__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  YODA::HistoBin1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/HistoBin1D.pyx":79
 * 
 *     def __isub__(HistoBin1D self, HistoBin1D other):
 *         c.HistoBin1D_isub_HistoBin1D(self.hb1ptr(), other.hb1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 79, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 79, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/HistoBin1D.pyx":80
 *     def __isub__(HistoBin1D self, HistoBin1D other):
 *         c.HistoBin1D_isub_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __add__(HistoBin1D a, HistoBin1D b):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":78
 *         return self
 * 
 *     def __isub__(HistoBin1D self, HistoBin1D other):             # <<<<<<<<<<<<<<
 *         c.HistoBin1D_isub_HistoBin1D(self.hb1ptr(), other.hb1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":82
 *         return self
 * 
 *     def __add__(HistoBin1D a, HistoBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_17__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_17__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_HistoBin1D, 1, "b", 0))) __PYX_ERR(17, 82, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_16__add__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_16__add__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  YODA::HistoBin1D *__pyx_t_2;
  YODA::HistoBin1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/HistoBin1D.pyx":83
 * 
 *     def __add__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/HistoBin1D.pyx":84
 *     def __add__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(HistoBin1D a, HistoBin1D b):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 84, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 84, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::HistoBin1D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 84, __pyx_L1_error)
  }

  /* "include/HistoBin1D.pyx":83
 * 
 *     def __add__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":82
 *         return self
 * 
 *     def __add__(HistoBin1D a, HistoBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":86
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 * 
 *     def __sub__(HistoBin1D a, HistoBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_19__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_19__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_HistoBin1D, 1, "b", 0))) __PYX_ERR(17, 86, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_18__sub__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_18__sub__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin1D *__pyx_t_1;
  YODA::HistoBin1D *__pyx_t_2;
  YODA::HistoBin1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/HistoBin1D.pyx":87
 * 
 *     def __sub__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/HistoBin1D.pyx":88
 *     def __sub__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 88, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin1D_hb1ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::HistoBin1D *)NULL))) __PYX_ERR(17, 88, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::HistoBin1D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(17, 88, __pyx_L1_error)
  }

  /* "include/HistoBin1D.pyx":87
 * 
 *     def __sub__(HistoBin1D a, HistoBin1D b):
 *         return cutil.new_owned_cls(HistoBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(17, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":86
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) + deref(b.hb1ptr())))
 * 
 *     def __sub__(HistoBin1D a, HistoBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin1D,
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin1D.pyx":90
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'HistoBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.sumW())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_21__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_21__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_20__repr__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_20__repr__(struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/HistoBin1D.pyx":91
 * 
 *     def __repr__(self):
 *         return 'HistoBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.sumW())             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 91, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_HistoBin1D_g_g_sumw_g, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(17, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/HistoBin1D.pyx":90
 *                                    new c.HistoBin1D(deref(a.hb1ptr()) - deref(b.hb1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'HistoBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.sumW())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_22__reduce_cython__, "HistoBin1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_23__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_22__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_22__reduce_cython__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin1D_24__setstate_cython__, "HistoBin1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin1D_25__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_24__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin1D_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin1D_24__setstate_cython__(((struct __pyx_obj_4yoda_4core_HistoBin1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin1D_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":10
 *     """
 * 
 *     cdef inline c.ProfileBin1D* pb1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin1D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  YODA::ProfileBin1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pb1ptr", 0);

  /* "include/ProfileBin1D.pyx":11
 * 
 *     cdef inline c.ProfileBin1D* pb1ptr(self) except NULL:
 *         return <c.ProfileBin1D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.ProfileBin1D* _ProfileBin1D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(18, 11, __pyx_L1_error)
  __pyx_r = ((YODA::ProfileBin1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":10
 *     """
 * 
 *     cdef inline c.ProfileBin1D* pb1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin1D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.pb1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":13
 *         return <c.ProfileBin1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.ProfileBin1D* _ProfileBin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin1D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::ProfileBin1D *__pyx_f_4yoda_4core_12ProfileBin1D__ProfileBin1D(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  YODA::ProfileBin1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_ProfileBin1D", 0);

  /* "include/ProfileBin1D.pyx":14
 *     # TODO: remove
 *     cdef inline c.ProfileBin1D* _ProfileBin1D(self) except NULL:
 *         return <c.ProfileBin1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(18, 14, __pyx_L1_error)
  __pyx_r = ((YODA::ProfileBin1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":13
 *         return <c.ProfileBin1D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.ProfileBin1D* _ProfileBin1D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D._ProfileBin1D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":17
 * 
 * 
 *     def __init__(self, double a, double b):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.ProfileBin1D(a, b))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_12ProfileBin1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_12ProfileBin1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  double __pyx_v_a;
  double __pyx_v_b;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 17, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_b)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(18, 17, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(18, 17, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(18, 17, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
    }
    __pyx_v_a = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_a == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 17, __pyx_L3_error)
    __pyx_v_b = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_b == (double)-1) && PyErr_Occurred())) __PYX_ERR(18, 17, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(18, 17, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D___init__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self), __pyx_v_a, __pyx_v_b);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_12ProfileBin1D___init__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, double __pyx_v_a, double __pyx_v_b) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/ProfileBin1D.pyx":18
 * 
 *     def __init__(self, double a, double b):
 *         cutil.set_owned_ptr(self, new c.ProfileBin1D(a, b))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  try {
    __pyx_t_1 = new YODA::ProfileBin1D(__pyx_v_a, __pyx_v_b);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 18, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/ProfileBin1D.pyx":17
 * 
 * 
 *     def __init__(self, double a, double b):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.ProfileBin1D(a, b))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":43
 * 
 * 
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the y-values that have filled the bin."""
 *         return self.pb1ptr().mean()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_3mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_2mean, "ProfileBin1D.mean(self)\nThe mean of the y-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_3mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_3mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_2mean};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_3mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_2mean(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_2mean(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mean", 0);

  /* "include/ProfileBin1D.pyx":45
 *     def mean(self):
 *         """The mean of the y-values that have filled the bin."""
 *         return self.pb1ptr().mean()             # <<<<<<<<<<<<<<
 * 
 *     def variance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 45, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->mean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 45, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":43
 * 
 * 
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the y-values that have filled the bin."""
 *         return self.pb1ptr().mean()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":47
 *         return self.pb1ptr().mean()
 * 
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """The variance of the y-values that have filled the bin."""
 *         return self.pb1ptr().variance()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_5variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_4variance, "ProfileBin1D.variance(self)\nThe variance of the y-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_5variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_5variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_4variance};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_5variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_4variance(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_4variance(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variance", 0);

  /* "include/ProfileBin1D.pyx":49
 *     def variance(self):
 *         """The variance of the y-values that have filled the bin."""
 *         return self.pb1ptr().variance()             # <<<<<<<<<<<<<<
 * 
 *     def stdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 49, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->variance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 49, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":47
 *         return self.pb1ptr().mean()
 * 
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """The variance of the y-values that have filled the bin."""
 *         return self.pb1ptr().variance()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":51
 *         return self.pb1ptr().variance()
 * 
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """The standard deviation of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdDev()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_7stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_6stdDev, "ProfileBin1D.stdDev(self)\nThe standard deviation of the y-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_7stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_7stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_6stdDev};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_7stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_6stdDev(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_6stdDev(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdDev", 0);

  /* "include/ProfileBin1D.pyx":53
 *     def stdDev(self):
 *         """The standard deviation of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdDev()             # <<<<<<<<<<<<<<
 * 
 *     def stdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 53, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->stdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 53, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":51
 *         return self.pb1ptr().variance()
 * 
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """The standard deviation of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdDev()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":55
 *         return self.pb1ptr().stdDev()
 * 
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """The standard error of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdErr()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_9stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_8stdErr, "ProfileBin1D.stdErr(self)\nThe standard error of the y-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_9stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_9stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_8stdErr};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_9stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_8stdErr(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_8stdErr(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdErr", 0);

  /* "include/ProfileBin1D.pyx":57
 *     def stdErr(self):
 *         """The standard error of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdErr()             # <<<<<<<<<<<<<<
 * 
 *     def rms(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 57, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->stdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 57, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":55
 *         return self.pb1ptr().stdDev()
 * 
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """The standard error of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdErr()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":59
 *         return self.pb1ptr().stdErr()
 * 
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """The RMS of the y-values that have filled the bin."""
 *         return self.pb1ptr().rms()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_11rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_10rms, "ProfileBin1D.rms(self)\nThe RMS of the y-values that have filled the bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_11rms = {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_11rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_10rms};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_11rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rms (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rms", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rms", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_10rms(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_10rms(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rms", 0);

  /* "include/ProfileBin1D.pyx":61
 *     def rms(self):
 *         """The RMS of the y-values that have filled the bin."""
 *         return self.pb1ptr().rms()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 61, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->rms();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 61, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":59
 *         return self.pb1ptr().stdErr()
 * 
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """The RMS of the y-values that have filled the bin."""
 *         return self.pb1ptr().rms()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.rms", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":64
 * 
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.pb1ptr().sumWY()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_13sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_12sumWY, "ProfileBin1D.sumWY(self)\nsum(weights * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_13sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_13sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_12sumWY};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_13sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_12sumWY(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_12sumWY(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY", 0);

  /* "include/ProfileBin1D.pyx":66
 *     def sumWY(self):
 *         """sum(weights * ys)"""
 *         return self.pb1ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 66, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 66, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":64
 * 
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.pb1ptr().sumWY()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.sumWY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":68
 *         return self.pb1ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.pb1ptr().sumWY2()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_15sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_14sumWY2, "ProfileBin1D.sumWY2(self)\nsum(weights * ys * ys)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_15sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_15sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_14sumWY2};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_15sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_14sumWY2(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_14sumWY2(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY2", 0);

  /* "include/ProfileBin1D.pyx":70
 *     def sumWY2(self):
 *         """sum(weights * ys * ys)"""
 *         return self.pb1ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 70, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 70, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":68
 *         return self.pb1ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.pb1ptr().sumWY2()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.sumWY2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":73
 * 
 * 
 *     def __iadd__(ProfileBin1D self, ProfileBin1D other):             # <<<<<<<<<<<<<<
 *         c.ProfileBin1D_iadd_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_17__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_17__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_ProfileBin1D, 1, "other", 0))) __PYX_ERR(18, 73, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_16__iadd__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_16__iadd__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  YODA::ProfileBin1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/ProfileBin1D.pyx":74
 * 
 *     def __iadd__(ProfileBin1D self, ProfileBin1D other):
 *         c.ProfileBin1D_iadd_ProfileBin1D(self.pb1ptr(), other.pb1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 74, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 74, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/ProfileBin1D.pyx":75
 *     def __iadd__(ProfileBin1D self, ProfileBin1D other):
 *         c.ProfileBin1D_iadd_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(ProfileBin1D self, ProfileBin1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":73
 * 
 * 
 *     def __iadd__(ProfileBin1D self, ProfileBin1D other):             # <<<<<<<<<<<<<<
 *         c.ProfileBin1D_iadd_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":77
 *         return self
 * 
 *     def __isub__(ProfileBin1D self, ProfileBin1D other):             # <<<<<<<<<<<<<<
 *         c.ProfileBin1D_isub_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_19__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_19__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_ProfileBin1D, 1, "other", 0))) __PYX_ERR(18, 77, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_18__isub__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_18__isub__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  YODA::ProfileBin1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/ProfileBin1D.pyx":78
 * 
 *     def __isub__(ProfileBin1D self, ProfileBin1D other):
 *         c.ProfileBin1D_isub_ProfileBin1D(self.pb1ptr(), other.pb1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 78, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 78, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/ProfileBin1D.pyx":79
 *     def __isub__(ProfileBin1D self, ProfileBin1D other):
 *         c.ProfileBin1D_isub_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __add__(ProfileBin1D a, ProfileBin1D b):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":77
 *         return self
 * 
 *     def __isub__(ProfileBin1D self, ProfileBin1D other):             # <<<<<<<<<<<<<<
 *         c.ProfileBin1D_isub_ProfileBin1D(self.pb1ptr(), other.pb1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":81
 *         return self
 * 
 *     def __add__(ProfileBin1D a, ProfileBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_21__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_21__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_ProfileBin1D, 1, "b", 0))) __PYX_ERR(18, 81, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_20__add__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_20__add__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  YODA::ProfileBin1D *__pyx_t_2;
  YODA::ProfileBin1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/ProfileBin1D.pyx":82
 * 
 *     def __add__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,             # <<<<<<<<<<<<<<
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/ProfileBin1D.pyx":83
 *     def __add__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 83, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 83, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::ProfileBin1D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 83, __pyx_L1_error)
  }

  /* "include/ProfileBin1D.pyx":82
 * 
 *     def __add__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,             # <<<<<<<<<<<<<<
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":81
 *         return self
 * 
 *     def __add__(ProfileBin1D a, ProfileBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":85
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 * 
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_23__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_23__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_ProfileBin1D, 1, "b", 0))) __PYX_ERR(18, 85, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_22__sub__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_22__sub__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin1D *__pyx_t_1;
  YODA::ProfileBin1D *__pyx_t_2;
  YODA::ProfileBin1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/ProfileBin1D.pyx":86
 * 
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/ProfileBin1D.pyx":87
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 87, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin1D *)NULL))) __PYX_ERR(18, 87, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::ProfileBin1D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(18, 87, __pyx_L1_error)
  }

  /* "include/ProfileBin1D.pyx":86
 * 
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):
 *         return cutil.new_owned_cls(ProfileBin1D,             # <<<<<<<<<<<<<<
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(18, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":85
 *                                   new c.ProfileBin1D(deref(a.pb1ptr()) + deref(b.pb1ptr())))
 * 
 *     def __sub__(ProfileBin1D a, ProfileBin1D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin1D,
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin1D.pyx":89
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'ProfileBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.mean())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_24__repr__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_24__repr__(struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/ProfileBin1D.pyx":90
 * 
 *     def __repr__(self):
 *         return 'ProfileBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.mean())             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mean); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_ProfileBin1D_g_g_sumw_g, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(18, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin1D.pyx":89
 *                                    new c.ProfileBin1D(deref(a.pb1ptr()) - deref(b.pb1ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'ProfileBin1D(%g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1], self.mean())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_27__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_26__reduce_cython__, "ProfileBin1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_27__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_26__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_27__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_26__reduce_cython__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_29__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin1D_28__setstate_cython__, "ProfileBin1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin1D_29__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_28__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin1D_29__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin1D_28__setstate_cython__(((struct __pyx_obj_4yoda_4core_ProfileBin1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin1D_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":10
 * 
 *     # Pointer upcasting mechanism
 *     cdef inline c.AnalysisObject* aoptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.AnalysisObject*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::AnalysisObject *__pyx_f_4yoda_4core_14AnalysisObject_aoptr(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  YODA::AnalysisObject *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("aoptr", 0);

  /* "include/AnalysisObject.pyx":11
 *     # Pointer upcasting mechanism
 *     cdef inline c.AnalysisObject* aoptr(self) except NULL:
 *         return <c.AnalysisObject*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     # # Pointer upcasting mechanism
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(1, 11, __pyx_L1_error)
  __pyx_r = ((YODA::AnalysisObject *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":10
 * 
 *     # Pointer upcasting mechanism
 *     cdef inline c.AnalysisObject* aoptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.AnalysisObject*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.aoptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":19
 * 
 *     # Deallocator (only needed as a base class)
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         p = self.aoptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_14AnalysisObject_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_14AnalysisObject_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_14AnalysisObject___dealloc__(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_14AnalysisObject___dealloc__(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  YODA::AnalysisObject *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/AnalysisObject.pyx":20
 *     # Deallocator (only needed as a base class)
 *     def __dealloc__(self):
 *         p = self.aoptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 20, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/AnalysisObject.pyx":21
 *     def __dealloc__(self):
 *         p = self.aoptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/AnalysisObject.pyx":22
 *         p = self.aoptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 * 
 */
    delete __pyx_v_p;

    /* "include/AnalysisObject.pyx":21
 *     def __dealloc__(self):
 *         p = self.aoptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/AnalysisObject.pyx":19
 * 
 *     # Deallocator (only needed as a base class)
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         p = self.aoptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.AnalysisObject.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/AnalysisObject.pyx":26
 * 
 *     #@property
 *     def type(self):             # <<<<<<<<<<<<<<
 *         "String identifier for this type"
 *         return self.aoptr().type()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_3type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_2type, "AnalysisObject.type(self)\nString identifier for this type");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_3type = {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_2type};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_3type(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("type (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("type", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "type", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_2type(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_2type(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("type", 0);

  /* "include/AnalysisObject.pyx":28
 *     def type(self):
 *         "String identifier for this type"
 *         return self.aoptr().type()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 28, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->type();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 28, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":26
 * 
 *     #@property
 *     def type(self):             # <<<<<<<<<<<<<<
 *         "String identifier for this type"
 *         return self.aoptr().type()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":31
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_5dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_4dim, "AnalysisObject.dim(self)\nFill dimension or plot dimension of this object, for fillables and scatters respectively");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_5dim = {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_5dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_4dim};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_5dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dim (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("dim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "dim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_4dim(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_4dim(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dim", 0);

  /* "include/AnalysisObject.pyx":33
 *     def dim(self):
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 33, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->dim();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 33, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":31
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":36
 * 
 *     #@property
 *     def annotations(self):             # <<<<<<<<<<<<<<
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_7annotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_6annotations, "AnalysisObject.annotations(self)\n() -> list[str]\n        A list of all annotation/metadata keys.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_7annotations = {"annotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_7annotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_6annotations};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_7annotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("annotations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "annotations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_6annotations(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_6annotations(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  std::string __pyx_v_a;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::AnalysisObject *__pyx_t_2;
  std::vector<std::string>  __pyx_t_3;
  std::vector<std::string> ::iterator __pyx_t_4;
  std::vector<std::string>  __pyx_t_5;
  std::string __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("annotations", 0);

  /* "include/AnalysisObject.pyx":39
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 *         return [ a for a in self.aoptr().annotations() ]             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 39, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_2->annotations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 39, __pyx_L1_error)
  }
  __pyx_t_5 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);
  __pyx_t_4 = __pyx_t_5.begin();
  for (;;) {
    if (!(__pyx_t_4 != __pyx_t_5.end())) break;
    __pyx_t_6 = *__pyx_t_4;
    ++__pyx_t_4;
    __pyx_v_a = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);
    __pyx_t_7 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_a); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_7))) __PYX_ERR(1, 39, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":36
 * 
 *     #@property
 *     def annotations(self):             # <<<<<<<<<<<<<<
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.annotations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_9annotationsDict(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_8annotationsDict, "AnalysisObject.annotationsDict(self)\n() -> dict[str->str]\n        A dict of all annotations/metadata entries.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_9annotationsDict = {"annotationsDict", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_9annotationsDict, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_8annotationsDict};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_9annotationsDict(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotationsDict (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("annotationsDict", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "annotationsDict", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_8annotationsDict(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_14AnalysisObject_15annotationsDict_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/AnalysisObject.pyx":46
 *         A dict of all annotations/metadata entries."""
 *         # TODO: add a map equivalent to C++?
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())             # <<<<<<<<<<<<<<
 * 
 *     def annotation(self, k, default=None):
 */

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_15annotationsDict_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_1_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(1, 46, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_14AnalysisObject_15annotationsDict_2generator, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_annotationsDict_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.annotationsDict.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_14AnalysisObject_15annotationsDict_2generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 46, __pyx_L1_error)
  __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(1, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(1, 46, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 46, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(1, 46, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 46, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(1, 46, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 46, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(1, 46, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_k, __pyx_n_s_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 46, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(1, 46, __pyx_L1_error) }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_outer_scope->__pyx_v_self), __pyx_n_s_annotation); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_cur_scope->__pyx_v_k};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 46, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(PyDict_SetItem(__pyx_r, (PyObject*)__pyx_t_4, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_8annotationsDict(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *__pyx_cur_scope;
  PyObject *__pyx_gb_4yoda_4core_14AnalysisObject_15annotationsDict_2generator = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("annotationsDict", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)__pyx_tp_new_4yoda_4core___pyx_scope_struct__annotationsDict(__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(1, 42, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);

  /* "include/AnalysisObject.pyx":46
 *         A dict of all annotations/metadata entries."""
 *         # TODO: add a map equivalent to C++?
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())             # <<<<<<<<<<<<<<
 * 
 *     def annotation(self, k, default=None):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_annotations); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __pyx_pf_4yoda_4core_14AnalysisObject_15annotationsDict_genexpr(((PyObject*)__pyx_cur_scope), __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_Generator_Next(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.annotationsDict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_14AnalysisObject_15annotationsDict_2generator);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":48
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())
 * 
 *     def annotation(self, k, default=None):             # <<<<<<<<<<<<<<
 *         """Get annotation k from this object (falling back to default if not set).
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_11annotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_10annotation, "AnalysisObject.annotation(self, k, default=None)\nGet annotation k from this object (falling back to default if not set).\n\n        The annotation string will be automatically converted to Python\n        native types as far as possible -- more complex types are possible\n        via the ast and yaml modules.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_11annotation = {"annotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_11annotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_10annotation};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_11annotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_k = 0;
  PyObject *__pyx_v_default = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("annotation (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_default,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_None);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_k)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_default);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 48, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "annotation") < 0)) __PYX_ERR(1, 48, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_k = values[0];
    __pyx_v_default = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("annotation", 0, 1, 2, __pyx_nargs); __PYX_ERR(1, 48, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.annotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_10annotation(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_k, __pyx_v_default);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_10annotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k, PyObject *__pyx_v_default) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::AnalysisObject *__pyx_t_4;
  std::string __pyx_t_5;
  std::string __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("annotation", 0);

  /* "include/AnalysisObject.pyx":54
 *         native types as far as possible -- more complex types are possible
 *         via the ast and yaml modules."""
 *         try:             # <<<<<<<<<<<<<<
 *             rtn = self.aoptr().annotation(<string>k)
 *             rtn = util._parseyaml(rtn)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/AnalysisObject.pyx":55
 *         via the ast and yaml modules."""
 *         try:
 *             rtn = self.aoptr().annotation(<string>k)             # <<<<<<<<<<<<<<
 *             rtn = util._parseyaml(rtn)
 *         except:
 */
      __pyx_t_4 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 55, __pyx_L3_error)
      __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 55, __pyx_L3_error)
      try {
        __pyx_t_6 = __pyx_t_4->annotation(((std::string)__pyx_t_5));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(1, 55, __pyx_L3_error)
      }
      __pyx_t_7 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 55, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_v_rtn = __pyx_t_7;
      __pyx_t_7 = 0;

      /* "include/AnalysisObject.pyx":56
 *         try:
 *             rtn = self.aoptr().annotation(<string>k)
 *             rtn = util._parseyaml(rtn)             # <<<<<<<<<<<<<<
 *         except:
 *             rtn = default
 */
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_util); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 56, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_parseyaml); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 56, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_rtn};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 56, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "include/AnalysisObject.pyx":54
 *         native types as far as possible -- more complex types are possible
 *         via the ast and yaml modules."""
 *         try:             # <<<<<<<<<<<<<<
 *             rtn = self.aoptr().annotation(<string>k)
 *             rtn = util._parseyaml(rtn)
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/AnalysisObject.pyx":57
 *             rtn = self.aoptr().annotation(<string>k)
 *             rtn = util._parseyaml(rtn)
 *         except:             # <<<<<<<<<<<<<<
 *             rtn = default
 *         return rtn
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.AnalysisObject.annotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_9, &__pyx_t_8) < 0) __PYX_ERR(1, 57, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_8);

      /* "include/AnalysisObject.pyx":58
 *             rtn = util._parseyaml(rtn)
 *         except:
 *             rtn = default             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
      __Pyx_INCREF(__pyx_v_default);
      __Pyx_XDECREF_SET(__pyx_v_rtn, __pyx_v_default);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "include/AnalysisObject.pyx":54
 *         native types as far as possible -- more complex types are possible
 *         via the ast and yaml modules."""
 *         try:             # <<<<<<<<<<<<<<
 *             rtn = self.aoptr().annotation(<string>k)
 *             rtn = util._parseyaml(rtn)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/AnalysisObject.pyx":59
 *         except:
 *             rtn = default
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def setAnnotation(self, k, v):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":48
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())
 * 
 *     def annotation(self, k, default=None):             # <<<<<<<<<<<<<<
 *         """Get annotation k from this object (falling back to default if not set).
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.annotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":61
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_13setAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_12setAnnotation, "AnalysisObject.setAnnotation(self, k, v)\nSet annotation k on this object.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_13setAnnotation = {"setAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_13setAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_12setAnnotation};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_13setAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_k = 0;
  PyObject *__pyx_v_v = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setAnnotation (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_v,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_k)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 61, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_v)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 61, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setAnnotation", 1, 2, 2, 1); __PYX_ERR(1, 61, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setAnnotation") < 0)) __PYX_ERR(1, 61, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_k = values[0];
    __pyx_v_v = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setAnnotation", 1, 2, 2, __pyx_nargs); __PYX_ERR(1, 61, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_12setAnnotation(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_k, __pyx_v_v);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_12setAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k, PyObject *__pyx_v_v) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  std::string __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setAnnotation", 0);

  /* "include/AnalysisObject.pyx":63
 *     def setAnnotation(self, k, v):
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,             # <<<<<<<<<<<<<<
 *                                    <string>util._autostr(v))
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 63, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":64
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,
 *                                    <string>util._autostr(v))             # <<<<<<<<<<<<<<
 * 
 *     def hasAnnotation(self, k):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_util); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_autostr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_v};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/AnalysisObject.pyx":63
 *     def setAnnotation(self, k, v):
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,             # <<<<<<<<<<<<<<
 *                                    <string>util._autostr(v))
 * 
 */
  try {
    __pyx_t_1->setAnnotation(((std::string)__pyx_t_2), ((std::string)__pyx_t_7));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 63, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":61
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":66
 *                                    <string>util._autostr(v))
 * 
 *     def hasAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_15hasAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_14hasAnnotation, "AnalysisObject.hasAnnotation(self, k)\nCheck if this object has annotation k.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_15hasAnnotation = {"hasAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_15hasAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_14hasAnnotation};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_15hasAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_k = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasAnnotation (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_k)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 66, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "hasAnnotation") < 0)) __PYX_ERR(1, 66, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_k = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("hasAnnotation", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 66, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.hasAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_14hasAnnotation(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_k);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_14hasAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasAnnotation", 0);

  /* "include/AnalysisObject.pyx":68
 *     def hasAnnotation(self, k):
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)             # <<<<<<<<<<<<<<
 * 
 *     def rmAnnotation(self, k):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 68, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 68, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->hasAnnotation(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 68, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":66
 *                                    <string>util._autostr(v))
 * 
 *     def hasAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.hasAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":70
 *         return self.aoptr().hasAnnotation(<string>k)
 * 
 *     def rmAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_17rmAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_16rmAnnotation, "AnalysisObject.rmAnnotation(self, k)\nRemove annotation k from this object.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_17rmAnnotation = {"rmAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_17rmAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_16rmAnnotation};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_17rmAnnotation(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_k = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmAnnotation (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_k)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 70, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmAnnotation") < 0)) __PYX_ERR(1, 70, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_k = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmAnnotation", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 70, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.rmAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_16rmAnnotation(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_k);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_16rmAnnotation(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_k) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmAnnotation", 0);

  /* "include/AnalysisObject.pyx":72
 *     def rmAnnotation(self, k):
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)             # <<<<<<<<<<<<<<
 * 
 *     def clearAnnotations(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 72, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_k); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 72, __pyx_L1_error)
  try {
    __pyx_t_1->rmAnnotation(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 72, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":70
 *         return self.aoptr().hasAnnotation(<string>k)
 * 
 *     def rmAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.rmAnnotation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":74
 *         self.aoptr().rmAnnotation(<string>k)
 * 
 *     def clearAnnotations(self):             # <<<<<<<<<<<<<<
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_19clearAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_18clearAnnotations, "AnalysisObject.clearAnnotations(self)\nClear the annotations dictionary.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_19clearAnnotations = {"clearAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_19clearAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_18clearAnnotations};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_19clearAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clearAnnotations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clearAnnotations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clearAnnotations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_18clearAnnotations(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_18clearAnnotations(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clearAnnotations", 0);

  /* "include/AnalysisObject.pyx":76
 *     def clearAnnotations(self):
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 76, __pyx_L1_error)
  try {
    __pyx_t_1->clearAnnotations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 76, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":74
 *         self.aoptr().rmAnnotation(<string>k)
 * 
 *     def clearAnnotations(self):             # <<<<<<<<<<<<<<
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.clearAnnotations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":79
 * 
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         """A human readable representation of this object."""
 *         try:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_21dump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_20dump, "AnalysisObject.dump(self)\nA human readable representation of this object.");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_21dump = {"dump", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_21dump, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_20dump};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_21dump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dump (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("dump", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "dump", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_20dump(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_20dump(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_v_StringIO = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dump", 0);

  /* "include/AnalysisObject.pyx":81
 *     def dump(self):
 *         """A human readable representation of this object."""
 *         try:             # <<<<<<<<<<<<<<
 *             from cStringIO import StringIO
 *         except ImportError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/AnalysisObject.pyx":82
 *         """A human readable representation of this object."""
 *         try:
 *             from cStringIO import StringIO             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             from io import StringIO
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 82, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_n_s_StringIO);
      __Pyx_GIVEREF(__pyx_n_s_StringIO);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_n_s_StringIO);
      __pyx_t_5 = __Pyx_Import(__pyx_n_s_cStringIO, __pyx_t_4, -1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 82, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_ImportFrom(__pyx_t_5, __pyx_n_s_StringIO); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 82, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_StringIO = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/AnalysisObject.pyx":81
 *     def dump(self):
 *         """A human readable representation of this object."""
 *         try:             # <<<<<<<<<<<<<<
 *             from cStringIO import StringIO
 *         except ImportError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/AnalysisObject.pyx":83
 *         try:
 *             from cStringIO import StringIO
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             from io import StringIO
 *         f = StringIO()
 */
    __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_6) {
      __Pyx_AddTraceback("yoda.core.AnalysisObject.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_7) < 0) __PYX_ERR(1, 83, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_7);

      /* "include/AnalysisObject.pyx":84
 *             from cStringIO import StringIO
 *         except ImportError:
 *             from io import StringIO             # <<<<<<<<<<<<<<
 *         f = StringIO()
 *         writeFLAT([self], f)
 */
      __pyx_t_8 = PyList_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 84, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_n_s_StringIO);
      __Pyx_GIVEREF(__pyx_n_s_StringIO);
      PyList_SET_ITEM(__pyx_t_8, 0, __pyx_n_s_StringIO);
      __pyx_t_9 = __Pyx_Import(__pyx_n_s_io, __pyx_t_8, -1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 84, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_ImportFrom(__pyx_t_9, __pyx_n_s_StringIO); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 84, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_StringIO, __pyx_t_8);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/AnalysisObject.pyx":81
 *     def dump(self):
 *         """A human readable representation of this object."""
 *         try:             # <<<<<<<<<<<<<<
 *             from cStringIO import StringIO
 *         except ImportError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/AnalysisObject.pyx":85
 *         except ImportError:
 *             from io import StringIO
 *         f = StringIO()             # <<<<<<<<<<<<<<
 *         writeFLAT([self], f)
 *         f.seek(0)
 */
  __Pyx_INCREF(__pyx_v_StringIO);
  __pyx_t_4 = __pyx_v_StringIO; __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_v_f = __pyx_t_7;
  __pyx_t_7 = 0;

  /* "include/AnalysisObject.pyx":86
 *             from io import StringIO
 *         f = StringIO()
 *         writeFLAT([self], f)             # <<<<<<<<<<<<<<
 *         f.seek(0)
 *         return f.read().strip()
 */
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_writeFLAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_v_self);
  PyList_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_v_self));
  __pyx_t_9 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_5, __pyx_v_f};
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 86, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "include/AnalysisObject.pyx":87
 *         f = StringIO()
 *         writeFLAT([self], f)
 *         f.seek(0)             # <<<<<<<<<<<<<<
 *         return f.read().strip()
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_seek); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_int_0};
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 87, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "include/AnalysisObject.pyx":88
 *         writeFLAT([self], f)
 *         f.seek(0)
 *         return f.read().strip()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_9 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_9, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_strip); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":79
 * 
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         """A human readable representation of this object."""
 *         try:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_StringIO);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":92
 * 
 *     #@property
 *     def name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_23name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_22name, "AnalysisObject.name(self)\n\n        Return the histogram name, i.e. the last part of the path (which may be empty).\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_23name = {"name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_23name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_22name};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_23name(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("name (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("name", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "name", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_22name(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_22name(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("name", 0);

  /* "include/AnalysisObject.pyx":96
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 *         """
 *         return self.aoptr().name()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 96, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->name();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 96, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":92
 * 
 *     #@property
 *     def name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":99
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_25path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_24path, "AnalysisObject.path(self)\n\n        Used for persistence and as a unique identifier. Must begin with\n        a '/' if not the empty string.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_25path = {"path", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_25path, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_24path};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_25path(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("path (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("path", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "path", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_24path(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_24path(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("path", 0);

  /* "include/AnalysisObject.pyx":104
 *         a '/' if not the empty string.
 *         """
 *         return self.aoptr().path()             # <<<<<<<<<<<<<<
 * 
 *     def setPath(self, path):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 104, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->path();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 104, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":99
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.path", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":106
 *         return self.aoptr().path()
 * 
 *     def setPath(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_27setPath(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_26setPath, "AnalysisObject.setPath(self, path)\n\n        Used for persistence and as a unique identifier. Must begin with\n        a '/' if not the empty string.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_27setPath = {"setPath", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_27setPath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_26setPath};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_27setPath(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setPath (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setPath") < 0)) __PYX_ERR(1, 106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_path = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setPath", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 106, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_26setPath(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_26setPath(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setPath", 0);

  /* "include/AnalysisObject.pyx":111
 *         a '/' if not the empty string.
 *         """
 *         self.aoptr().setPath(<string>path)             # <<<<<<<<<<<<<<
 * 
 *     # property path:
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 111, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 111, __pyx_L1_error)
  try {
    __pyx_t_1->setPath(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 111, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":106
 *         return self.aoptr().path()
 * 
 *     def setPath(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setPath", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":125
 * 
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_29title(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_28title, "AnalysisObject.title(self)\n\n        Histogram title\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_29title = {"title", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_29title, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_28title};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_29title(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("title (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("title", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "title", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_28title(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_28title(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("title", 0);

  /* "include/AnalysisObject.pyx":129
 *         Histogram title
 *         """
 *         return self.aoptr().title()             # <<<<<<<<<<<<<<
 * 
 *     def setTitle(self, title):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 129, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->title();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 129, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":125
 * 
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.title", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":131
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_31setTitle(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_30setTitle, "AnalysisObject.setTitle(self, title)\n\n        Set the histogram title (optional)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_31setTitle = {"setTitle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_31setTitle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_30setTitle};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_31setTitle(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setTitle (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_title,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 131, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setTitle") < 0)) __PYX_ERR(1, 131, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_title = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setTitle", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 131, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setTitle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_30setTitle(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_30setTitle(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::AnalysisObject *__pyx_t_1;
  std::string __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setTitle", 0);

  /* "include/AnalysisObject.pyx":135
 *         Set the histogram title (optional)
 *         """
 *         self.aoptr().setTitle(<string>title)             # <<<<<<<<<<<<<<
 * 
 *     # property title:
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(1, 135, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 135, __pyx_L1_error)
  try {
    __pyx_t_1->setTitle(((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(1, 135, __pyx_L1_error)
  }

  /* "include/AnalysisObject.pyx":131
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.setTitle", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/AnalysisObject.pyx":148
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s'>" % (self.__class__.__name__, self.path)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_33__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_33__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_32__repr__(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_32__repr__(struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/AnalysisObject.pyx":149
 * 
 *     def __repr__(self):
 *         return "<%s '%s'>" % (self.__class__.__name__, self.path)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/AnalysisObject.pyx":148
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s'>" % (self.__class__.__name__, self.path)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.AnalysisObject.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_35__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_34__reduce_cython__, "AnalysisObject.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_35__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_35__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_34__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_35__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_34__reduce_cython__(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_34__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_37__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14AnalysisObject_36__setstate_cython__, "AnalysisObject.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_14AnalysisObject_37__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_37__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_36__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_14AnalysisObject_37__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14AnalysisObject_36__setstate_cython__(((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14AnalysisObject_36__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.AnalysisObject.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":36
 *     """
 * 
 *     cdef inline c.Histo1D* h1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Histo1D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Histo1D *__pyx_f_4yoda_4core_7Histo1D_h1ptr(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  YODA::Histo1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("h1ptr", 0);

  /* "include/Histo1D.pyx":37
 * 
 *     cdef inline c.Histo1D* h1ptr(self) except NULL:
 *         return <c.Histo1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, *args, **kwargs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(2, 37, __pyx_L1_error)
  __pyx_r = ((YODA::Histo1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Histo1D.pyx":36
 *     """
 * 
 *     cdef inline c.Histo1D* h1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Histo1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.h1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":39
 *         return <c.Histo1D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Histo1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Histo1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D___init__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Histo1D___init__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Histo1D.pyx":40
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__init5); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__init3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Histo1D.pyx":39
 *         return <c.Histo1D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":42
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_3_Histo1D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_2__init2, "Histo1D.__init2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_3_Histo1D__init2 = {"_Histo1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_3_Histo1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_2__init2};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_3_Histo1D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__init2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 42, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 42, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__init2") < 0)) __PYX_ERR(2, 42, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__init2", 0, 0, 2, __pyx_nargs); __PYX_ERR(2, 42, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_2__init2(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_2__init2(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Histo1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__init2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo1D.pyx":43
 * 
 *     def __init2(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo1D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Histo1D.pyx":44
 *     def __init2(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Histo1D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Histo1D.pyx":45
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo1D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 45, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 45, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Histo1D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 45, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Histo1D.pyx":42
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":48
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_5_Histo1D__init3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_4__init3, "Histo1D.__init3(self, bins_or_edges, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_5_Histo1D__init3 = {"_Histo1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_5_Histo1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_4__init3};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_5_Histo1D__init3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_bins_or_edges = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__init3 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bins_or_edges,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_bins_or_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 48, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 48, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 48, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__init3") < 0)) __PYX_ERR(2, 48, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_bins_or_edges = values[0];
    __pyx_v_path = values[1];
    __pyx_v_title = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__init3", 0, 1, 3, __pyx_nargs); __PYX_ERR(2, 48, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_4__init3(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_bins_or_edges, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_7Histo1D_15_Histo1D__init3_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/Histo1D.pyx":55
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Histo1D(edges, <string>path, <string>title))
 *         except:
 */

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_15_Histo1D__init3_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_2_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(2, 55, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_7Histo1D_15_Histo1D__init3_2generator1, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Histo1D__init3_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(2, 55, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init3.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_7Histo1D_15_Histo1D__init3_2generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(2, 55, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(2, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(2, 55, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 55, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 55, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 55, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 55, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 55, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 55, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 55, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":48
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_4__init3(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_bins_or_edges, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<double>  __pyx_v_edges;
  PyObject *__pyx_v_bins = NULL;
  PyObject *__pyx_gb_4yoda_4core_7Histo1D_15_Histo1D__init3_2generator1 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::Histo1D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__init3", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo1D.pyx":51
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Histo1D.pyx":52
 *         cdef vector[double] edges
 *         try:
 *             path  = path             # <<<<<<<<<<<<<<
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 */
      __Pyx_INCREF(__pyx_v_path);
      __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

      /* "include/Histo1D.pyx":53
 *         try:
 *             path  = path
 *             title = title             # <<<<<<<<<<<<<<
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)
 */
      __Pyx_INCREF(__pyx_v_title);
      __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

      /* "include/Histo1D.pyx":55
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Histo1D(edges, <string>path, <string>title))
 *         except:
 */
      __pyx_t_4 = __pyx_pf_4yoda_4core_7Histo1D_15_Histo1D__init3_genexpr(NULL, __pyx_v_bins_or_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 55, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 55, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 55, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_edges = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

      /* "include/Histo1D.pyx":56
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)
 *             cutil.set_owned_ptr(self, new c.Histo1D(edges, <string>path, <string>title))             # <<<<<<<<<<<<<<
 *         except:
 *             ## Assume it's a list of HistoBin1D
 */
      __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 56, __pyx_L3_error)
      __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 56, __pyx_L3_error)
      try {
        __pyx_t_9 = new YODA::Histo1D(__pyx_v_edges, ((std::string)__pyx_t_7), ((std::string)__pyx_t_8));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(2, 56, __pyx_L3_error)
      }
      __pyx_t_5 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 56, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/Histo1D.pyx":51
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/Histo1D.pyx":57
 *             edges = list(float(x) for x in bins_or_edges)
 *             cutil.set_owned_ptr(self, new c.Histo1D(edges, <string>path, <string>title))
 *         except:             # <<<<<<<<<<<<<<
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(2, 57, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_10);

      /* "include/Histo1D.pyx":59
 *         except:
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges             # <<<<<<<<<<<<<<
 *             self.__init2(path, title)
 *             self.addBins(bins)
 */
      __Pyx_INCREF(__pyx_v_bins_or_edges);
      __pyx_v_bins = __pyx_v_bins_or_edges;

      /* "include/Histo1D.pyx":60
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges
 *             self.__init2(path, title)             # <<<<<<<<<<<<<<
 *             self.addBins(bins)
 * 
 */
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__init2); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 60, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_14 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_v_path, __pyx_v_title};
        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 2+__pyx_t_14);
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 60, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      /* "include/Histo1D.pyx":61
 *             bins = bins_or_edges
 *             self.__init2(path, title)
 *             self.addBins(bins)             # <<<<<<<<<<<<<<
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):
 */
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addBins); if (unlikely(!__pyx_t_12)) __PYX_ERR(2, 61, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_14 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_bins};
        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 61, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "include/Histo1D.pyx":51
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Histo1D.pyx":48
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bins);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_7Histo1D_15_Histo1D__init3_2generator1);
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":63
 *             self.addBins(bins)
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_7_Histo1D__init5(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_6__init5, "Histo1D.__init5(self, nbins, low, high, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_7_Histo1D__init5 = {"_Histo1D__init5", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_7_Histo1D__init5, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_6__init5};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_7_Histo1D__init5(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nbins = 0;
  PyObject *__pyx_v_low = 0;
  PyObject *__pyx_v_high = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__init5 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_low,&__pyx_n_s_high,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = ((PyObject *)__pyx_kp_s__2);
    values[4] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 63, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_low)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 63, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo1D__init5", 0, 3, 5, 1); __PYX_ERR(2, 63, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_high)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 63, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo1D__init5", 0, 3, 5, 2); __PYX_ERR(2, 63, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 63, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 63, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__init5") < 0)) __PYX_ERR(2, 63, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nbins = values[0];
    __pyx_v_low = values[1];
    __pyx_v_high = values[2];
    __pyx_v_path = values[3];
    __pyx_v_title = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__init5", 0, 3, 5, __pyx_nargs); __PYX_ERR(2, 63, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_6__init5(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_nbins, __pyx_v_low, __pyx_v_high, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_6__init5(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_low, PyObject *__pyx_v_high, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  std::string __pyx_t_4;
  std::string __pyx_t_5;
  YODA::Histo1D *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__init5", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo1D.pyx":64
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo1D(nbins, low, high, <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Histo1D.pyx":65
 *     def __init5(self, nbins, low, high, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Histo1D(nbins, low, high, <string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Histo1D.pyx":66
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo1D(nbins, low, high, <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_nbins); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 66, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_low); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 66, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_high); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 66, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 66, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 66, __pyx_L1_error)
  try {
    __pyx_t_6 = new YODA::Histo1D(__pyx_t_1, __pyx_t_2, __pyx_t_3, ((std::string)__pyx_t_4), ((std::string)__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 66, __pyx_L1_error)
  }
  __pyx_t_7 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "include/Histo1D.pyx":63
 *             self.addBins(bins)
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__init5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":69
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.numBins()
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_7Histo1D_9__len__(PyObject *__pyx_v_self); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_8__len__, "Number of bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_7Histo1D_8__len__;
#endif
static Py_ssize_t __pyx_pw_4yoda_4core_7Histo1D_9__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_8__len__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_7Histo1D_8__len__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Histo1D.pyx":71
 *     def __len__(self):
 *         "Number of bins"
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, i):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":69
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.numBins()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":73
 *         return self.numBins()
 * 
 *     def __getitem__(self, i):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_10__getitem__, "Direct access to bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_7Histo1D_10__getitem__;
#endif
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_10__getitem__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((PyObject *)__pyx_v_i));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_10__getitem__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_i) {
  size_t __pyx_v_ii;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Histo1D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Histo1D.pyx":75
 *     def __getitem__(self, i):
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.numBins())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(ii), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 75, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 75, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(2, 75, __pyx_L1_error)
  __pyx_v_ii = __pyx_t_7;

  /* "include/Histo1D.pyx":76
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(ii), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 76, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D), (&__pyx_t_8->bin(__pyx_v_ii)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":73
 *         return self.numBins()
 * 
 *     def __getitem__(self, i):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":79
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         xmean = None
 *         if self.sumW() != 0:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_12__repr__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_12__repr__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_xmean = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Histo1D.pyx":80
 * 
 *     def __repr__(self):
 *         xmean = None             # <<<<<<<<<<<<<<
 *         if self.sumW() != 0:
 *             xmean = "%0.2e" % self.xMean()
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_xmean = Py_None;

  /* "include/Histo1D.pyx":81
 *     def __repr__(self):
 *         xmean = None
 *         if self.sumW() != 0:             # <<<<<<<<<<<<<<
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = (__Pyx_PyInt_BoolNeObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(2, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/Histo1D.pyx":82
 *         xmean = None
 *         if self.sumW() != 0:
 *             xmean = "%0.2e" % self.xMean()             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 *                (self.__class__.__name__, self.path(),
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMean); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_3, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_0_2e, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF_SET(__pyx_v_xmean, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "include/Histo1D.pyx":81
 *     def __repr__(self):
 *         xmean = None
 *         if self.sumW() != 0:             # <<<<<<<<<<<<<<
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 */
  }

  /* "include/Histo1D.pyx":83
 *         if self.sumW() != 0:
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \             # <<<<<<<<<<<<<<
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW(), xmean)
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Histo1D.pyx":84
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 *                (self.__class__.__name__, self.path(),             # <<<<<<<<<<<<<<
 *                 len(self.bins()), self.sumW(), xmean)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/Histo1D.pyx":85
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW(), xmean)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_8 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(2, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_9 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_9, };
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 85, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }

  /* "include/Histo1D.pyx":84
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \
 *                (self.__class__.__name__, self.path(),             # <<<<<<<<<<<<<<
 *                 len(self.bins()), self.sumW(), xmean)
 * 
 */
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __Pyx_INCREF(__pyx_v_xmean);
  __Pyx_GIVEREF(__pyx_v_xmean);
  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_v_xmean);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_6 = 0;

  /* "include/Histo1D.pyx":83
 *         if self.sumW() != 0:
 *             xmean = "%0.2e" % self.xMean()
 *         return "<%s '%s' %d bins, sumw=%0.2g, xmean=%s>" % \             # <<<<<<<<<<<<<<
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW(), xmean)
 */
  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":79
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         xmean = None
 *         if self.sumW() != 0:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Histo1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_xmean);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":88
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_14reset, "Histo1D.reset(self)\nNone -> None.\n        Reset the histogram but leave the bin structure.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_15reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_14reset};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_14reset(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_14reset(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Histo1D.pyx":91
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 *         self.h1ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 91, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 91, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":88
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":94
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo1D.
 *         Clone this Histo1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_16clone, "Histo1D.clone(self)\nNone -> Histo1D.\n        Clone this Histo1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_16clone};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_16clone(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_16clone(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  YODA::Histo1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Histo1D.pyx":97
 *         """None -> Histo1D.
 *         Clone this Histo1D."""
 *         return cutil.new_owned_cls(Histo1D, self.h1ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 97, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 97, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Histo1D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":94
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo1D.
 *         Clone this Histo1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":100
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,[w]) -> None.
 *         Fill with given x value and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_18fill, "Histo1D.fill(self, x, weight=1.0, fraction=1.0)\n(x,[w]) -> None.\n        Fill with given x value and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_19fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_18fill};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 100, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 100, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 100, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(2, 100, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_weight = values[1];
    __pyx_v_fraction = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 1, 3, __pyx_nargs); __PYX_ERR(2, 100, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_18fill(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_x, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_18fill(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Histo1D.pyx":103
 *         """(x,[w]) -> None.
 *         Fill with given x value and optional weight."""
 *         self.h1ptr().fill(x, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 103, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 103, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 103, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 103, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 103, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":100
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,[w]) -> None.
 *         Fill with given x value and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":106
 * 
 * 
 *     def fillBin(self, size_t ix, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,[w]) -> None.
 *         Fill bin ix and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_20fillBin, "Histo1D.fillBin(self, size_t ix, weight=1.0, fraction=1.0)\n(ix,[w]) -> None.\n        Fill bin ix and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_21fillBin = {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_20fillBin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_ix;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ix,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ix)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 106, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 106, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fillBin") < 0)) __PYX_ERR(2, 106, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ix = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_ix == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 106, __pyx_L3_error)
    __pyx_v_weight = values[1];
    __pyx_v_fraction = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fillBin", 0, 1, 3, __pyx_nargs); __PYX_ERR(2, 106, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_20fillBin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_ix, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_20fillBin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, size_t __pyx_v_ix, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillBin", 0);

  /* "include/Histo1D.pyx":109
 *         """(ix,[w]) -> None.
 *         Fill bin ix and optional weight."""
 *         self.h1ptr().fillBin(ix, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 109, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 109, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 109, __pyx_L1_error)
  try {
    __pyx_t_1->fillBin(__pyx_v_ix, __pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 109, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":106
 * 
 * 
 *     def fillBin(self, size_t ix, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,[w]) -> None.
 *         Fill bin ix and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":112
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the total distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_22totalDbn, "Histo1D.totalDbn(self)\nNone -> Dbn1D\n        The Dbn1D representing the total distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_23totalDbn = {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_22totalDbn};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalDbn (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("totalDbn", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "totalDbn", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_22totalDbn(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_22totalDbn(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("totalDbn", 0);

  /* "include/Histo1D.pyx":115
 *         """None -> Dbn1D
 *         The Dbn1D representing the total distribution."""
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().totalDbn(), self)             # <<<<<<<<<<<<<<
 * 
 *     def underflow(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 115, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D), (&__pyx_t_1->totalDbn()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":112
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the total distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Histo1D.totalDbn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":117
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the underflow distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_25underflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_24underflow, "Histo1D.underflow(self)\nNone -> Dbn1D\n        The Dbn1D representing the underflow distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_25underflow = {"underflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_25underflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_24underflow};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_25underflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("underflow (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("underflow", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "underflow", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_24underflow(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_24underflow(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("underflow", 0);

  /* "include/Histo1D.pyx":120
 *         """None -> Dbn1D
 *         The Dbn1D representing the underflow distribution."""
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().underflow(), self)             # <<<<<<<<<<<<<<
 * 
 *     def overflow(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 120, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D), (&__pyx_t_1->underflow()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":117
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the underflow distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Histo1D.underflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":122
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the overflow distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_27overflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_26overflow, "Histo1D.overflow(self)\nNone -> Dbn1D\n        The Dbn1D representing the overflow distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_27overflow = {"overflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_27overflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_26overflow};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_27overflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("overflow (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("overflow", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "overflow", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_26overflow(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_26overflow(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("overflow", 0);

  /* "include/Histo1D.pyx":125
 *         """None -> Dbn1D
 *         The Dbn1D representing the overflow distribution."""
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().overflow(), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 125, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D), (&__pyx_t_1->overflow()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":122
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the overflow distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Histo1D.overflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":128
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_29integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_28integral, "Histo1D.integral(self, includeoverflows=True)\n([bool]) -> float\n        Histogram integral, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_29integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_29integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_28integral};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_29integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 128, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "integral") < 0)) __PYX_ERR(2, 128, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 128, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_28integral(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_28integral(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 0);

  /* "include/Histo1D.pyx":131
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 *         return self.h1ptr().integral(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def integralRange(self, int ia, int ib):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 131, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 131, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->integral(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":128
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":133
 *         return self.h1ptr().integral(includeoverflows)
 * 
 *     def integralRange(self, int ia, int ib):             # <<<<<<<<<<<<<<
 *         """(int, int) -> float
 *         Integral between bins ia..ib inclusive"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_31integralRange(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_30integralRange, "Histo1D.integralRange(self, int ia, int ib)\n(int, int) -> float\n        Integral between bins ia..ib inclusive");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_31integralRange = {"integralRange", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_31integralRange, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_30integralRange};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_31integralRange(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_ia;
  int __pyx_v_ib;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralRange (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ia,&__pyx_n_s_ib,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ia)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 133, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ib)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 133, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("integralRange", 1, 2, 2, 1); __PYX_ERR(2, 133, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "integralRange") < 0)) __PYX_ERR(2, 133, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_ia = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ia == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 133, __pyx_L3_error)
    __pyx_v_ib = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_ib == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 133, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralRange", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 133, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.integralRange", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_30integralRange(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_ia, __pyx_v_ib);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_30integralRange(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, int __pyx_v_ia, int __pyx_v_ib) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralRange", 0);

  /* "include/Histo1D.pyx":136
 *         """(int, int) -> float
 *         Integral between bins ia..ib inclusive"""
 *         return self.h1ptr().integralRange(ia, ib)             # <<<<<<<<<<<<<<
 * 
 *     def integralTo(self, int ia, includeunderflow=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 136, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->integralRange(__pyx_v_ia, __pyx_v_ib)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":133
 *         return self.h1ptr().integral(includeoverflows)
 * 
 *     def integralRange(self, int ia, int ib):             # <<<<<<<<<<<<<<
 *         """(int, int) -> float
 *         Integral between bins ia..ib inclusive"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Histo1D.integralRange", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":138
 *         return self.h1ptr().integralRange(ia, ib)
 * 
 *     def integralTo(self, int ia, includeunderflow=True):             # <<<<<<<<<<<<<<
 *         """(int, [bool]) -> float
 *         Integral up to bin ia inclusive, optionally excluding the underflow"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_33integralTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_32integralTo, "Histo1D.integralTo(self, int ia, includeunderflow=True)\n(int, [bool]) -> float\n        Integral up to bin ia inclusive, optionally excluding the underflow");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_33integralTo = {"integralTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_33integralTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_32integralTo};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_33integralTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  int __pyx_v_ia;
  PyObject *__pyx_v_includeunderflow = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integralTo (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ia,&__pyx_n_s_includeunderflow,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ia)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 138, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeunderflow);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "integralTo") < 0)) __PYX_ERR(2, 138, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ia = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ia == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 138, __pyx_L3_error)
    __pyx_v_includeunderflow = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integralTo", 0, 1, 2, __pyx_nargs); __PYX_ERR(2, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.integralTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_32integralTo(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_ia, __pyx_v_includeunderflow);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_32integralTo(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, int __pyx_v_ia, PyObject *__pyx_v_includeunderflow) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integralTo", 0);

  /* "include/Histo1D.pyx":141
 *         """(int, [bool]) -> float
 *         Integral up to bin ia inclusive, optionally excluding the underflow"""
 *         return self.h1ptr().integralRange(ia, includeunderflow)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 141, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_includeunderflow); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(2, 141, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->integralRange(__pyx_v_ia, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":138
 *         return self.h1ptr().integralRange(ia, ib)
 * 
 *     def integralTo(self, int ia, includeunderflow=True):             # <<<<<<<<<<<<<<
 *         """(int, [bool]) -> float
 *         Integral up to bin ia inclusive, optionally excluding the underflow"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.integralTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":144
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_35numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_34numEntries, "Histo1D.numEntries(self, includeoverflows=True)\n([bool]) -> float\n        Number of times this histogram was filled, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_35numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_35numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_34numEntries};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_35numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "numEntries") < 0)) __PYX_ERR(2, 144, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 144, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_34numEntries(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_34numEntries(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Histo1D.pyx":147
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 *         return self.h1ptr().numEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 147, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 147, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_1->numEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":144
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":149
 *         return self.h1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_37effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_36effNumEntries, "Histo1D.effNumEntries(self, includeoverflows=True)\n([bool]) -> float\n        Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_37effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_37effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_36effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_37effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 149, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "effNumEntries") < 0)) __PYX_ERR(2, 149, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 149, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_36effNumEntries(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_36effNumEntries(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Histo1D.pyx":152
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows."""
 *         return self.h1ptr().effNumEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 152, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 152, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->effNumEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":149
 *         return self.h1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":154
 *         return self.h1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_39sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_38sumW, "Histo1D.sumW(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_39sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_39sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_38sumW};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_39sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 154, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW") < 0)) __PYX_ERR(2, 154, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 154, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_38sumW(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_38sumW(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Histo1D.pyx":157
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 *         return self.h1ptr().sumW(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 157, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 157, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":154
 *         return self.h1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":159
 *         return self.h1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_41sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_40sumW2, "Histo1D.sumW2(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_41sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_41sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_40sumW2};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_41sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 159, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW2") < 0)) __PYX_ERR(2, 159, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 159, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_40sumW2(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_40sumW2(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Histo1D.pyx":162
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 *         return self.h1ptr().sumW2(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 162, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 162, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW2(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":159
 *         return self.h1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":165
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_42xMean, "Histo1D.xMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_43xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_42xMean};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 165, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMean") < 0)) __PYX_ERR(2, 165, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 165, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_42xMean(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_42xMean(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/Histo1D.pyx":168
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 *         return self.h1ptr().xMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 168, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 168, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":165
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":170
 *         return self.h1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_45xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_44xVariance, "Histo1D.xVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_45xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_45xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_44xVariance};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_45xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 170, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVariance") < 0)) __PYX_ERR(2, 170, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 170, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_44xVariance(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_44xVariance(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/Histo1D.pyx":173
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 *         return self.h1ptr().xVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 173, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 173, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":170
 *         return self.h1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":175
 *         return self.h1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_47xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_46xStdDev, "Histo1D.xStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_47xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_47xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_46xStdDev};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_47xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 175, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdDev") < 0)) __PYX_ERR(2, 175, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 175, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_46xStdDev(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_46xStdDev(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/Histo1D.pyx":178
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 *         return self.h1ptr().xStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 178, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 178, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":175
 *         return self.h1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":180
 *         return self.h1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_49xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_48xStdErr, "Histo1D.xStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_49xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_49xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_48xStdErr};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_49xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 180, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdErr") < 0)) __PYX_ERR(2, 180, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 180, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_48xStdErr(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_48xStdErr(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/Histo1D.pyx":183
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 *         return self.h1ptr().xStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 183, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 183, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":180
 *         return self.h1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":185
 *         return self.h1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_51xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_50xRMS, "Histo1D.xRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_51xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_51xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_50xRMS};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_51xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 185, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xRMS") < 0)) __PYX_ERR(2, 185, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 185, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_50xRMS(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_50xRMS(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/Histo1D.pyx":188
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 *         return self.h1ptr().xRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 188, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 188, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":185
 *         return self.h1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":191
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_53scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_52scaleW, "Histo1D.scaleW(self, w)\n (float) -> None.\n        Rescale the weights in this histogram by the factor w.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_53scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_53scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_52scaleW};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_53scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 191, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(2, 191, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 191, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_52scaleW(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_52scaleW(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Histo1D.pyx":194
 *         """ (float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 *         self.h1ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, normto=1.0, includeoverflows=True):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 194, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 194, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 194, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":191
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":196
 *         self.h1ptr().scaleW(w)
 * 
 *     def normalize(self, normto=1.0, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """ (float, bool) -> None.
 *         Normalize the histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_55normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_54normalize, "Histo1D.normalize(self, normto=1.0, includeoverflows=True)\n (float, bool) -> None.\n        Normalize the histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_55normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_55normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_54normalize};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_55normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_normto = 0;
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeoverflows,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_normto);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 196, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 196, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "normalize") < 0)) __PYX_ERR(2, 196, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_normto = values[0];
    __pyx_v_includeoverflows = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(2, 196, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_54normalize(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_54normalize(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_normto, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  bool __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 0);

  /* "include/Histo1D.pyx":199
 *         """ (float, bool) -> None.
 *         Normalize the histogram."""
 *         self.h1ptr().normalize(normto, includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 199, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_normto); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 199, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 199, __pyx_L1_error)
  try {
    __pyx_t_1->normalize(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 199, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":196
 *         self.h1ptr().scaleW(w)
 * 
 *     def normalize(self, normto=1.0, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """ (float, bool) -> None.
 *         Normalize the histogram."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":202
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_57xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_56xMin, "Histo1D.xMin(self)\nLow x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_57xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_57xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_56xMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_57xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_56xMin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_56xMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Histo1D.pyx":204
 *     def xMin(self):
 *         """Low x edge of the histo."""
 *         return self.h1ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 204, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 204, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":202
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h1ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":206
 *         return self.h1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_59xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_58xMax, "Histo1D.xMax(self)\nHigh x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_59xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_59xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_58xMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_59xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_58xMax(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_58xMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Histo1D.pyx":208
 *     def xMax(self):
 *         """High x edge of the histo."""
 *         return self.h1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def numBins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 208, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 208, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":206
 *         return self.h1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h1ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":210
 *         return self.h1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_61numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_60numBins, "Histo1D.numBins(self)\n() -> int\n        Number of bins (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_61numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_61numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_60numBins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_61numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_60numBins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_60numBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 0);

  /* "include/Histo1D.pyx":213
 *         """() -> int
 *         Number of bins (not including overflows)."""
 *         return self.h1ptr().numBins()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 213, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 213, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":210
 *         return self.h1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":215
 *         return self.h1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of x-axis bins (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_63numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_62numBinsX, "Histo1D.numBinsX(self)\n() -> int\n        Number of x-axis bins (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_63numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_63numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_62numBinsX};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_63numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_62numBinsX(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_62numBinsX(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 0);

  /* "include/Histo1D.pyx":218
 *         """() -> int
 *         Number of x-axis bins (not including overflows)."""
 *         return self.h1ptr().numBinsX()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 218, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 218, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":215
 *         return self.h1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of x-axis bins (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":220
 *         return self.h1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_65bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_64bins, "Histo1D.bins(self)\nAccess the ordered bins list.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_65bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_65bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_64bins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_65bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("bins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_64bins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_64bins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 0);

  /* "include/Histo1D.pyx":222
 *     def bins(self):
 *         """Access the ordered bins list."""
 *         return list(self)             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":220
 *         return self.h1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Histo1D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":224
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin (equivalent to bins[i]"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h1ptr().numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_67bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_66bin, "Histo1D.bin(self, i)\nGet the i'th bin (equivalent to bins[i]");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_67bin = {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_67bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_66bin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_67bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 224, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bin") < 0)) __PYX_ERR(2, 224, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 224, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_66bin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_66bin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 0);

  /* "include/Histo1D.pyx":227
 *         """Get the i'th bin (equivalent to bins[i]"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h1ptr().numBins())
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def binIndexAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 227, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 227, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D), (&__pyx_t_1->bin(__pyx_t_2)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":224
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin (equivalent to bins[i]"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h1ptr().numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":229
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.h1ptr().binIndexAt(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_69binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_68binIndexAt, "Histo1D.binIndexAt(self, x)\nGet the bin index containing position x");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_69binIndexAt = {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_69binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_68binIndexAt};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_69binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binIndexAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 229, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binIndexAt") < 0)) __PYX_ERR(2, 229, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 229, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_68binIndexAt(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_68binIndexAt(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binIndexAt", 0);

  /* "include/Histo1D.pyx":231
 *     def binIndexAt(self, x):
 *         """Get the bin index containing position x"""
 *         return self.h1ptr().binIndexAt(x)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 231, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 231, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->binIndexAt(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 231, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":229
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.h1ptr().binIndexAt(x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo1D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":233
 *         return self.h1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_71binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_70binAt, "Histo1D.binAt(self, x)\nGet the bin containing position x");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_71binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_71binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_70binAt};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_71binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 233, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binAt") < 0)) __PYX_ERR(2, 233, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 233, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_70binAt(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_70binAt(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 0);

  /* "include/Histo1D.pyx":238
 *         #return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().binAt(x), self)
 *         # TODO: need out-of-range check to return None?
 *         return self.bin(self.binIndexAt(x))             # <<<<<<<<<<<<<<
 * 
 *     def addBin(self, low, high):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_binIndexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_x};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 238, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":233
 *         return self.h1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":240
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """(low, high) -> None.
 *         Add a bin."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_73addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_72addBin, "Histo1D.addBin(self, low, high)\n(low, high) -> None.\n        Add a bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_73addBin = {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_73addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_72addBin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_73addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_low = 0;
  PyObject *__pyx_v_high = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_low,&__pyx_n_s_high,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_low)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 240, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_high)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 240, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 2, 2, 1); __PYX_ERR(2, 240, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBin") < 0)) __PYX_ERR(2, 240, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_low = values[0];
    __pyx_v_high = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBin", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 240, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_72addBin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_low, __pyx_v_high);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_72addBin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_low, PyObject *__pyx_v_high) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBin", 0);

  /* "include/Histo1D.pyx":243
 *         """(low, high) -> None.
 *         Add a bin."""
 *         self.h1ptr().addBin(low, high)             # <<<<<<<<<<<<<<
 * 
 *     def addBins(self, edges_or_bins):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 243, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_low); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 243, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_high); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 243, __pyx_L1_error)
  try {
    __pyx_t_1->addBin(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 243, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":240
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """(low, high) -> None.
 *         Add a bin."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":245
 *         self.h1ptr().addBin(low, high)
 * 
 *     def addBins(self, edges_or_bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_75addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_74addBins, "Histo1D.addBins(self, edges_or_bins)\nAdd several bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_75addBins = {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_75addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_74addBins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_75addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edges_or_bins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges_or_bins,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges_or_bins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 245, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBins") < 0)) __PYX_ERR(2, 245, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_edges_or_bins = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBins", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 245, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_74addBins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_edges_or_bins);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_74addBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges_or_bins) {
  PyObject *__pyx_v_arg = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBins", 0);

  /* "include/Histo1D.pyx":248
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 *         arg = list(edges_or_bins)             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__addBins_edges,
 *                        self.__addBins_tuples,
 */
  __pyx_t_1 = PySequence_List(__pyx_v_edges_or_bins); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 248, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_arg = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":249
 *         # TODO: simplify / make consistent
 *         arg = list(edges_or_bins)
 *         util.try_loop([self.__addBins_edges,             # <<<<<<<<<<<<<<
 *                        self.__addBins_tuples,
 *                        self.__addBins_points,
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_edges); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "include/Histo1D.pyx":250
 *         arg = list(edges_or_bins)
 *         util.try_loop([self.__addBins_edges,
 *                        self.__addBins_tuples,             # <<<<<<<<<<<<<<
 *                        self.__addBins_points,
 *                        self.__addBins_bins], arg)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_tuples); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "include/Histo1D.pyx":251
 *         util.try_loop([self.__addBins_edges,
 *                        self.__addBins_tuples,
 *                        self.__addBins_points,             # <<<<<<<<<<<<<<
 *                        self.__addBins_bins], arg)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);

  /* "include/Histo1D.pyx":252
 *                        self.__addBins_tuples,
 *                        self.__addBins_points,
 *                        self.__addBins_bins], arg)             # <<<<<<<<<<<<<<
 * 
 *     def __addBins_edges(self, edges):
 */
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_bins); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);

  /* "include/Histo1D.pyx":249
 *         # TODO: simplify / make consistent
 *         arg = list(edges_or_bins)
 *         util.try_loop([self.__addBins_edges,             # <<<<<<<<<<<<<<
 *                        self.__addBins_tuples,
 *                        self.__addBins_points,
 */
  __pyx_t_7 = PyList_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyList_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __pyx_t_2 = 0;
  __pyx_t_4 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;

  /* "include/Histo1D.pyx":252
 *                        self.__addBins_tuples,
 *                        self.__addBins_points,
 *                        self.__addBins_bins], arg)             # <<<<<<<<<<<<<<
 * 
 *     def __addBins_edges(self, edges):
 */
  __pyx_t_6 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_7, __pyx_v_arg};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 2+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":245
 *         self.h1ptr().addBin(low, high)
 * 
 *     def addBins(self, edges_or_bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_arg);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":254
 *                        self.__addBins_bins], arg)
 * 
 *     def __addBins_edges(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] cedges
 *         for edge in edges:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_76__addBins_edges, "Histo1D.__addBins_edges(self, edges)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges = {"_Histo1D__addBins_edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_76__addBins_edges};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__addBins_edges (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 254, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__addBins_edges") < 0)) __PYX_ERR(2, 254, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_edges = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__addBins_edges", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 254, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_76__addBins_edges(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_76__addBins_edges(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  std::vector<double>  __pyx_v_cedges;
  PyObject *__pyx_v_edge = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  double __pyx_t_5;
  int __pyx_t_6;
  YODA::Histo1D *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__addBins_edges", 0);

  /* "include/Histo1D.pyx":256
 *     def __addBins_edges(self, edges):
 *         cdef vector[double] cedges
 *         for edge in edges:             # <<<<<<<<<<<<<<
 *             cedges.push_back(edge)
 *         if len(edges):
 */
  if (likely(PyList_CheckExact(__pyx_v_edges)) || PyTuple_CheckExact(__pyx_v_edges)) {
    __pyx_t_1 = __pyx_v_edges; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 256, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 256, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_edge, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Histo1D.pyx":257
 *         cdef vector[double] cedges
 *         for edge in edges:
 *             cedges.push_back(edge)             # <<<<<<<<<<<<<<
 *         if len(edges):
 *             self.h1ptr().addBins(cedges)
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_edge); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 257, __pyx_L1_error)
    try {
      __pyx_v_cedges.push_back(__pyx_t_5);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(2, 257, __pyx_L1_error)
    }

    /* "include/Histo1D.pyx":256
 *     def __addBins_edges(self, edges):
 *         cdef vector[double] cedges
 *         for edge in edges:             # <<<<<<<<<<<<<<
 *             cedges.push_back(edge)
 *         if len(edges):
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":258
 *         for edge in edges:
 *             cedges.push_back(edge)
 *         if len(edges):             # <<<<<<<<<<<<<<
 *             self.h1ptr().addBins(cedges)
 * 
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_edges); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(2, 258, __pyx_L1_error)
  __pyx_t_6 = (__pyx_t_2 != 0);
  if (__pyx_t_6) {

    /* "include/Histo1D.pyx":259
 *             cedges.push_back(edge)
 *         if len(edges):
 *             self.h1ptr().addBins(cedges)             # <<<<<<<<<<<<<<
 * 
 *     def __addBins_bins(self, bins):
 */
    __pyx_t_7 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_7 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 259, __pyx_L1_error)
    try {
      __pyx_t_7->addBins(__pyx_v_cedges);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 259, __pyx_L1_error)
    }

    /* "include/Histo1D.pyx":258
 *         for edge in edges:
 *             cedges.push_back(edge)
 *         if len(edges):             # <<<<<<<<<<<<<<
 *             self.h1ptr().addBins(cedges)
 * 
 */
  }

  /* "include/Histo1D.pyx":254
 *                        self.__addBins_bins], arg)
 * 
 *     def __addBins_edges(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] cedges
 *         for edge in edges:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_edges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_edge);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":261
 *             self.h1ptr().addBins(cedges)
 * 
 *     def __addBins_bins(self, bins):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_78__addBins_bins, "Histo1D.__addBins_bins(self, bins)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins = {"_Histo1D__addBins_bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_78__addBins_bins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_bins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__addBins_bins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bins,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_bins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 261, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__addBins_bins") < 0)) __PYX_ERR(2, 261, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_bins = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__addBins_bins", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 261, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_78__addBins_bins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_bins);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_78__addBins_bins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_bins) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__addBins_bins", 0);

  /* "include/Histo1D.pyx":262
 * 
 *     def __addBins_bins(self, bins):
 *         self.__addBins_tuples([ b.xEdges for b in bins ])             # <<<<<<<<<<<<<<
 * 
 *     def __addBins_points(self, points):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_tuples); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(PyList_CheckExact(__pyx_v_bins)) || PyTuple_CheckExact(__pyx_v_bins)) {
    __pyx_t_4 = __pyx_v_bins; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 262, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(2, 262, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 262, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(2, 262, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 262, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_6(__pyx_t_4);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 262, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xEdges); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 262, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 262, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":261
 *             self.h1ptr().addBins(cedges)
 * 
 *     def __addBins_bins(self, bins):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":264
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 *     def __addBins_points(self, points):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_81_Histo1D__addBins_points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_80__addBins_points, "Histo1D.__addBins_points(self, points)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_81_Histo1D__addBins_points = {"_Histo1D__addBins_points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_81_Histo1D__addBins_points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_80__addBins_points};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_81_Histo1D__addBins_points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_points = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__addBins_points (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_points)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 264, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__addBins_points") < 0)) __PYX_ERR(2, 264, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_points = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__addBins_points", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 264, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_80__addBins_points(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_points);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_80__addBins_points(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_points) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__addBins_points", 0);

  /* "include/Histo1D.pyx":265
 * 
 *     def __addBins_points(self, points):
 *         self.__addBins_tuples([ p.xWidth for p in points ])             # <<<<<<<<<<<<<<
 * 
 *     def __addBins_tuples(self, tuples):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo1D__addBins_tuples); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(PyList_CheckExact(__pyx_v_points)) || PyTuple_CheckExact(__pyx_v_points)) {
    __pyx_t_4 = __pyx_v_points; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_points); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 265, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(2, 265, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(2, 265, __pyx_L1_error)
        #else
        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
      }
    } else {
      __pyx_t_7 = __pyx_t_6(__pyx_t_4);
      if (unlikely(!__pyx_t_7)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 265, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_7);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_7);
    __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xWidth); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_7))) __PYX_ERR(2, 265, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":264
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 *     def __addBins_points(self, points):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_points", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":267
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 *     def __addBins_tuples(self, tuples):             # <<<<<<<<<<<<<<
 *         cdef double a, b
 *         for a, b in tuples:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_82__addBins_tuples, "Histo1D.__addBins_tuples(self, tuples)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples = {"_Histo1D__addBins_tuples", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_82__addBins_tuples};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_tuples = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo1D__addBins_tuples (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_tuples,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_tuples)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 267, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo1D__addBins_tuples") < 0)) __PYX_ERR(2, 267, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_tuples = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo1D__addBins_tuples", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 267, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_tuples", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_82__addBins_tuples(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_tuples);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_82__addBins_tuples(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_tuples) {
  double __pyx_v_a;
  double __pyx_v_b;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  double __pyx_t_9;
  double __pyx_t_10;
  YODA::Histo1D *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo1D__addBins_tuples", 0);

  /* "include/Histo1D.pyx":269
 *     def __addBins_tuples(self, tuples):
 *         cdef double a, b
 *         for a, b in tuples:             # <<<<<<<<<<<<<<
 *             self.h1ptr().addBin(a, b)
 * 
 */
  if (likely(PyList_CheckExact(__pyx_v_tuples)) || PyTuple_CheckExact(__pyx_v_tuples)) {
    __pyx_t_1 = __pyx_v_tuples; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tuples); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 269, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 269, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(2, 269, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 269, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(2, 269, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(2, 269, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(2, 269, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_5); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_10 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_10 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_a = __pyx_t_9;
    __pyx_v_b = __pyx_t_10;

    /* "include/Histo1D.pyx":270
 *         cdef double a, b
 *         for a, b in tuples:
 *             self.h1ptr().addBin(a, b)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_11 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_11 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 270, __pyx_L1_error)
    try {
      __pyx_t_11->addBin(__pyx_v_a, __pyx_v_b);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 270, __pyx_L1_error)
    }

    /* "include/Histo1D.pyx":269
 *     def __addBins_tuples(self, tuples):
 *         cdef double a, b
 *         for a, b in tuples:             # <<<<<<<<<<<<<<
 *             self.h1ptr().addBin(a, b)
 * 
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":267
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 *     def __addBins_tuples(self, tuples):             # <<<<<<<<<<<<<<
 *         cdef double a, b
 *         for a, b in tuples:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D._Histo1D__addBins_tuples", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":273
 * 
 * 
 *     def mergeBins(self, ia, ib):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_85mergeBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_84mergeBins, "Histo1D.mergeBins(self, ia, ib)\nmergeBins(ia, ib) -> None.\n        Merge bins from indices ia through ib.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_85mergeBins = {"mergeBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_85mergeBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_84mergeBins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_85mergeBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ia = 0;
  PyObject *__pyx_v_ib = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mergeBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ia,&__pyx_n_s_ib,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ia)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 273, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ib)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 273, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mergeBins", 1, 2, 2, 1); __PYX_ERR(2, 273, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mergeBins") < 0)) __PYX_ERR(2, 273, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_ia = values[0];
    __pyx_v_ib = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mergeBins", 1, 2, 2, __pyx_nargs); __PYX_ERR(2, 273, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.mergeBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_84mergeBins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_ia, __pyx_v_ib);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_84mergeBins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_ia, PyObject *__pyx_v_ib) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mergeBins", 0);

  /* "include/Histo1D.pyx":276
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 *         self.h1ptr().mergeBins(ia, ib)             # <<<<<<<<<<<<<<
 * 
 *     def rebinBy(self, n, begin=0, end=None):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 276, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_ia); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 276, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_ib); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 276, __pyx_L1_error)
  try {
    __pyx_t_1->mergeBins(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 276, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":273
 * 
 * 
 *     def mergeBins(self, ia, ib):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.mergeBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":278
 *         self.h1ptr().mergeBins(ia, ib)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_87rebinBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_86rebinBy, "Histo1D.rebinBy(self, n, begin=0, end=None)\n(n) -> None.\n        Merge every group of n bins together (between begin and end, if specified).");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_87rebinBy = {"rebinBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_87rebinBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_86rebinBy};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_87rebinBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_n = 0;
  PyObject *__pyx_v_begin = 0;
  PyObject *__pyx_v_end = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)Py_None);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_n)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 278, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_begin);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 278, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_end);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 278, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rebinBy") < 0)) __PYX_ERR(2, 278, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_n = values[0];
    __pyx_v_begin = values[1];
    __pyx_v_end = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(2, 278, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.rebinBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_86rebinBy(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_86rebinBy(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  YODA::Histo1D *__pyx_t_6;
  unsigned int __pyx_t_7;
  size_t __pyx_t_8;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinBy", 0);
  __Pyx_INCREF(__pyx_v_end);

  /* "include/Histo1D.pyx":281
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:             # <<<<<<<<<<<<<<
 *             end = self.numBins()
 *         self.h1ptr().rebinBy(int(n), begin, end)
 */
  __pyx_t_1 = (__pyx_v_end == Py_None);
  if (__pyx_t_1) {

    /* "include/Histo1D.pyx":282
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:
 *             end = self.numBins()             # <<<<<<<<<<<<<<
 *         self.h1ptr().rebinBy(int(n), begin, end)
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 282, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_end, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "include/Histo1D.pyx":281
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:             # <<<<<<<<<<<<<<
 *             end = self.numBins()
 *         self.h1ptr().rebinBy(int(n), begin, end)
 */
  }

  /* "include/Histo1D.pyx":283
 *         if end is None:
 *             end = self.numBins()
 *         self.h1ptr().rebinBy(int(n), begin, end)             # <<<<<<<<<<<<<<
 * 
 *     def rebinTo(self, edges):
 */
  __pyx_t_6 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 283, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyInt_As_unsigned_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(2, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 283, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(2, 283, __pyx_L1_error)
  try {
    __pyx_t_6->rebinBy(__pyx_t_7, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 283, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":278
 *         self.h1ptr().mergeBins(ia, ib)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo1D.rebinBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_end);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":285
 *         self.h1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_89rebinTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_88rebinTo, "Histo1D.rebinTo(self, edges)\n([edges]) -> None.\n        Merge bins to produce the given new edges... which must be a subset of the current ones.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_89rebinTo = {"rebinTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_89rebinTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_88rebinTo};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_89rebinTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinTo (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 285, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rebinTo") < 0)) __PYX_ERR(2, 285, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_edges = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 285, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.rebinTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_88rebinTo(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_88rebinTo(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  std::vector<double>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinTo", 0);

  /* "include/Histo1D.pyx":288
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 *         self.h1ptr().rebinTo(edges)             # <<<<<<<<<<<<<<
 * 
 *     def rebin(self, arg, **kwargs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 288, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 288, __pyx_L1_error)
  try {
    __pyx_t_1->rebinTo(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 288, __pyx_L1_error)
  }

  /* "include/Histo1D.pyx":285
 *         self.h1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.rebinTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":290
 *         self.h1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_91rebin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_90rebin, "Histo1D.rebin(self, arg, **kwargs)\n(n) -> None or ([edges]) -> None\n        Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_91rebin = {"rebin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_91rebin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_90rebin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_91rebin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebin (wrapper)", 0);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 290, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwargs, values + 0, kwd_pos_args, "rebin") < 0)) __PYX_ERR(2, 290, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebin", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 290, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.Histo1D.rebin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_90rebin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_arg, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_90rebin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebin", 0);

  /* "include/Histo1D.pyx":293
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinTo(arg, **kwargs)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(2, 293, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo1D.pyx":294
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):
 *             self.rebinTo(arg, **kwargs)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinBy(arg, **kwargs)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinTo); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg);
    __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/Histo1D.pyx":293
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinTo(arg, **kwargs)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo1D.pyx":296
 *             self.rebinTo(arg, **kwargs)
 *         else:
 *             self.rebinBy(arg, **kwargs)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinBy); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arg);
    __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 296, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Histo1D.pyx":290
 *         self.h1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.rebin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":299
 * 
 * 
 *     def mkScatter(self, usefocus=False, binwidthdiv=True, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Histo1D to a Scatter2D, with optional argument to control the x-positions
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_93mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_92mkScatter, "Histo1D.mkScatter(self, usefocus=False, binwidthdiv=True, uflow_binwidth=-1, oflow_binwidth=-1)\nNone -> Scatter2D.\n        Convert this Histo1D to a Scatter2D, with optional argument to control the x-positions\n        of points within the bins, whether y represents sumW or density, and optional under-\n        and overflow points.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_93mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_93mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_92mkScatter};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_93mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_usefocus = 0;
  PyObject *__pyx_v_binwidthdiv = 0;
  PyObject *__pyx_v_uflow_binwidth = 0;
  PyObject *__pyx_v_oflow_binwidth = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_usefocus,&__pyx_n_s_binwidthdiv,&__pyx_n_s_uflow_binwidth,&__pyx_n_s_oflow_binwidth,0};
    PyObject* values[4] = {0,0,0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_True);
    values[2] = ((PyObject *)__pyx_int_neg_1);
    values[3] = ((PyObject *)__pyx_int_neg_1);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefocus);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 299, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binwidthdiv);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 299, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_uflow_binwidth);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 299, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_oflow_binwidth);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 299, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkScatter") < 0)) __PYX_ERR(2, 299, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_usefocus = values[0];
    __pyx_v_binwidthdiv = values[1];
    __pyx_v_uflow_binwidth = values[2];
    __pyx_v_oflow_binwidth = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 4, __pyx_nargs); __PYX_ERR(2, 299, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_92mkScatter(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_usefocus, __pyx_v_binwidthdiv, __pyx_v_uflow_binwidth, __pyx_v_oflow_binwidth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_92mkScatter(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_binwidthdiv, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth) {
  YODA::Scatter2D __pyx_v_s2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  YODA::Scatter2D __pyx_t_6;
  YODA::Scatter2D *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Histo1D.pyx":304
 *         of points within the bins, whether y represents sumW or density, and optional under-
 *         and overflow points."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Histo1D(deref(self.h1ptr()), usefocus, binwidthdiv, uflow_binwidth, oflow_binwidth)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 304, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_usefocus); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 304, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_binwidthdiv); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 304, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_uflow_binwidth); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 304, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_oflow_binwidth); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(2, 304, __pyx_L1_error)
  try {
    __pyx_t_6 = YODA::mkScatter((*__pyx_t_1), __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 304, __pyx_L1_error)
  }
  __pyx_v_s2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Histo1D.pyx":305
 *         and overflow points."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Histo1D(deref(self.h1ptr()), usefocus, binwidthdiv, uflow_binwidth, oflow_binwidth)
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_7 = __pyx_v_s2.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 305, __pyx_L1_error)
  }
  __pyx_t_8 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":299
 * 
 * 
 *     def mkScatter(self, usefocus=False, binwidthdiv=True, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Histo1D to a Scatter2D, with optional argument to control the x-positions
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Histo1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":308
 * 
 * 
 *     def toIntegral(self, efficiency=False, includeunderflow=True, includeoverflow=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_95toIntegral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_94toIntegral, "Histo1D.toIntegral(self, efficiency=False, includeunderflow=True, includeoverflow=True)\nNone -> Scatter2D.\n\n        Convert this Histo1D to a Scatter2D representing an integral (i.e. cumulative)\n        histogram constructed from this differential one.\n\n        The efficiency argument is used to construct an 'efficiency integral' histogram\n        and the includeXXXflow bools determine whether under and overflows are included\n        in computing the (efficiency) integral.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_95toIntegral = {"toIntegral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_95toIntegral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_94toIntegral};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_95toIntegral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_efficiency = 0;
  PyObject *__pyx_v_includeunderflow = 0;
  PyObject *__pyx_v_includeoverflow = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("toIntegral (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_efficiency,&__pyx_n_s_includeunderflow,&__pyx_n_s_includeoverflow,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_True);
    values[2] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_efficiency);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 308, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeunderflow);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 308, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflow);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 308, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "toIntegral") < 0)) __PYX_ERR(2, 308, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_efficiency = values[0];
    __pyx_v_includeunderflow = values[1];
    __pyx_v_includeoverflow = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("toIntegral", 0, 0, 3, __pyx_nargs); __PYX_ERR(2, 308, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.toIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_94toIntegral(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_efficiency, __pyx_v_includeunderflow, __pyx_v_includeoverflow);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_94toIntegral(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_efficiency, PyObject *__pyx_v_includeunderflow, PyObject *__pyx_v_includeoverflow) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::Histo1D *__pyx_t_3;
  bool __pyx_t_4;
  YODA::Scatter2D __pyx_t_5;
  bool __pyx_t_6;
  YODA::Scatter2D *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("toIntegral", 0);

  /* "include/Histo1D.pyx":319
 *         """
 *         cdef c.Scatter2D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo1D_toIntegral(deref(self.h1ptr()), includeunderflow)
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 319, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "include/Histo1D.pyx":320
 *         cdef c.Scatter2D s
 *         if not efficiency:
 *             s = c.Histo1D_toIntegral(deref(self.h1ptr()), includeunderflow)             # <<<<<<<<<<<<<<
 *         else:
 *             s = c.Histo1D_toIntegralEff(deref(self.h1ptr()), includeunderflow, includeoverflow)
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 320, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeunderflow); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 320, __pyx_L1_error)
    try {
      __pyx_t_5 = toIntegralHisto((*__pyx_t_3), __pyx_t_4);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 320, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);

    /* "include/Histo1D.pyx":319
 *         """
 *         cdef c.Scatter2D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo1D_toIntegral(deref(self.h1ptr()), includeunderflow)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo1D.pyx":322
 *             s = c.Histo1D_toIntegral(deref(self.h1ptr()), includeunderflow)
 *         else:
 *             s = c.Histo1D_toIntegralEff(deref(self.h1ptr()), includeunderflow, includeoverflow)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
  /*else*/ {
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 322, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_includeunderflow); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 322, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflow); if (unlikely((__pyx_t_6 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(2, 322, __pyx_L1_error)
    try {
      __pyx_t_5 = toIntegralEfficiencyHisto((*__pyx_t_3), __pyx_t_4, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 322, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
  }
  __pyx_L3:;

  /* "include/Histo1D.pyx":323
 *         else:
 *             s = c.Histo1D_toIntegralEff(deref(self.h1ptr()), includeunderflow, includeoverflow)
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(self, Histo1D h, efficiency=False):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_7 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 323, __pyx_L1_error)
  }
  __pyx_t_8 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":308
 * 
 * 
 *     def toIntegral(self, efficiency=False, includeunderflow=True, includeoverflow=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Histo1D.toIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":325
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(self, Histo1D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo1D -> Scatter2D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_97divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_96divideBy, "Histo1D.divideBy(self, Histo1D h, efficiency=False)\nHisto1D -> Scatter2D\n\n        Divide this histogram by h, returning a Scatter2D. The optional 'efficiency'\n        argument, if set True, will use a binomial efficiency treatment of the errors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_97divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_97divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_96divideBy};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_97divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_h = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,&__pyx_n_s_efficiency,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_h)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 325, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_efficiency);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 325, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divideBy") < 0)) __PYX_ERR(2, 325, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo1D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(2, 325, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_h), __pyx_ptype_4yoda_4core_Histo1D, 1, "h", 0))) __PYX_ERR(2, 325, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_96divideBy(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_h, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_96divideBy(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_h, PyObject *__pyx_v_efficiency) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::Histo1D *__pyx_t_3;
  YODA::Histo1D *__pyx_t_4;
  YODA::Scatter2D __pyx_t_5;
  YODA::Scatter2D *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 0);

  /* "include/Histo1D.pyx":334
 *         #     raise ValueError("Histograms must be of the same type to be divided")
 *         cdef c.Scatter2D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo1D_div_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 334, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "include/Histo1D.pyx":335
 *         cdef c.Scatter2D s
 *         if not efficiency:
 *             s = c.Histo1D_div_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             s = c.Histo1D_eff_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 335, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_h); if (unlikely(__pyx_t_4 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 335, __pyx_L1_error)
    try {
      __pyx_t_5 = divide((*__pyx_t_3), (*__pyx_t_4));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 335, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);

    /* "include/Histo1D.pyx":334
 *         #     raise ValueError("Histograms must be of the same type to be divided")
 *         cdef c.Scatter2D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo1D_div_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo1D.pyx":337
 *             s = c.Histo1D_div_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))
 *         else:
 *             s = c.Histo1D_eff_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
  /*else*/ {
    __pyx_t_4 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 337, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_h); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 337, __pyx_L1_error)
    try {
      __pyx_t_5 = efficiency((*__pyx_t_4), (*__pyx_t_3));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(2, 337, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
  }
  __pyx_L3:;

  /* "include/Histo1D.pyx":338
 *         else:
 *             s = c.Histo1D_eff_Histo1D(deref(self.h1ptr()), deref(h.h1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 338, __pyx_L1_error)
  }
  __pyx_t_7 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(2, 338, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":325
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(self, Histo1D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo1D -> Scatter2D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo1D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":343
 *     ## In-place special methods
 * 
 *     def __iadd__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         c.Histo1D_iadd_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_99__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_99__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 343, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_98__iadd__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_98__iadd__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  YODA::Histo1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/Histo1D.pyx":344
 * 
 *     def __iadd__(Histo1D self, Histo1D other):
 *         c.Histo1D_iadd_Histo1D(self.h1ptr(), other.h1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 344, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 344, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Histo1D.pyx":345
 *     def __iadd__(Histo1D self, Histo1D other):
 *         c.Histo1D_iadd_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __isub__(Histo1D self, Histo1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Histo1D.pyx":343
 *     ## In-place special methods
 * 
 *     def __iadd__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         c.Histo1D_iadd_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":347
 *         return self
 * 
 *     def __isub__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         c.Histo1D_isub_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_101__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_101__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 347, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_100__isub__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_100__isub__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo1D *__pyx_t_1;
  YODA::Histo1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/Histo1D.pyx":348
 * 
 *     def __isub__(Histo1D self, Histo1D other):
 *         c.Histo1D_isub_Histo1D(self.h1ptr(), other.h1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 348, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 348, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Histo1D.pyx":349
 *     def __isub__(Histo1D self, Histo1D other):
 *         c.Histo1D_isub_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     # def __imul__(Histo1D self, double x):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Histo1D.pyx":347
 *         return self
 * 
 *     def __isub__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         c.Histo1D_isub_Histo1D(self.h1ptr(), other.h1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":368
 *     #     return self.clone()
 * 
 *     def __add__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         # print "BAR"
 *         h = Histo1D()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_103__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_103__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 368, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_102__add__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_102__add__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Histo1D *__pyx_t_2;
  YODA::Histo1D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Histo1D.pyx":370
 *     def __add__(Histo1D self, Histo1D other):
 *         # print "BAR"
 *         h = Histo1D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Histo1D_add_Histo1D(self.h1ptr(), other.h1ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Histo1D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":371
 *         # print "BAR"
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_add_Histo1D(self.h1ptr(), other.h1ptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 371, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 371, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":372
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_add_Histo1D(self.h1ptr(), other.h1ptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     # TODO: Cython doesn't support type overloading for special functions?
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Histo1D.pyx":368
 *     #     return self.clone()
 * 
 *     def __add__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         # print "BAR"
 *         h = Histo1D()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Histo1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":390
 *     #     return self
 * 
 *     def __sub__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_sub_Histo1D(self.h1ptr(), other.h1ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_105__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_105__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 390, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_104__sub__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_104__sub__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Histo1D *__pyx_t_2;
  YODA::Histo1D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Histo1D.pyx":391
 * 
 *     def __sub__(Histo1D self, Histo1D other):
 *         h = Histo1D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Histo1D_sub_Histo1D(self.h1ptr(), other.h1ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Histo1D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":392
 *     def __sub__(Histo1D self, Histo1D other):
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_sub_Histo1D(self.h1ptr(), other.h1ptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 392, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 392, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":393
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_sub_Histo1D(self.h1ptr(), other.h1ptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     # def __mul__(Histo1D self, double x):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Histo1D.pyx":390
 *     #     return self
 * 
 *     def __sub__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         h = Histo1D()
 *         cutil.set_owned_ptr(h, c.Histo1D_sub_Histo1D(self.h1ptr(), other.h1ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Histo1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":402
 *     #     return h
 * 
 *     def __div__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_107__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_107__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 402, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_106__div__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Histo1D_106__div__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 0);

  /* "include/Histo1D.pyx":403
 * 
 *     def __div__(Histo1D self, Histo1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Histo1D self, Histo1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":402
 *     #     return h
 * 
 *     def __div__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

/* "include/Histo1D.pyx":405
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_109__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_109__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo1D, 1, "other", 0))) __PYX_ERR(2, 405, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_108__truediv__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_108__truediv__(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 0);

  /* "include/Histo1D.pyx":406
 * 
 *     def __truediv__(Histo1D self, Histo1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 406, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":405
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Histo1D self, Histo1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":416
 *     #     return [b.sumW for b in self.bins]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_111_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_110_mknp, "Histo1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_111_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_111_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_110_mknp};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_111_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 416, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(2, 416, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(2, 416, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_110_mknp(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_110_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Histo1D.pyx":417
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Histo1D.pyx":418
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 418, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Histo1D.pyx":419
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 419, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 419, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Histo1D.pyx":417
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Histo1D.pyx":420
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Histo1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(2, 420, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Histo1D.pyx":421
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def xEdges(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Histo1D.pyx":417
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Histo1D.pyx":416
 *     #     return [b.sumW for b in self.bins]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":423
 *             return xs
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.h1ptr().xEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_113xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_112xEdges, "Histo1D.xEdges(self)\nAll x edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_113xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_113xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_112xEdges};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_113xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_112xEdges(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_112xEdges(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/Histo1D.pyx":425
 *     def xEdges(self):
 *         """All x edges of the histo."""
 *         return self._mknp(self.h1ptr().xEdges())             # <<<<<<<<<<<<<<
 * 
 *     def xWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 425, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 425, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":423
 *             return xs
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.h1ptr().xEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":427
 *         return self._mknp(self.h1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h1ptr().xWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_115xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_114xWidths, "Histo1D.xWidths(self)\nAll x widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_115xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_115xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_114xWidths};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_115xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_114xWidths(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_114xWidths(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 0);

  /* "include/Histo1D.pyx":429
 *     def xWidths(self):
 *         """All x widths of the histo."""
 *         return self._mknp(self.h1ptr().xWidths())             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo1D_h1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo1D *)NULL))) __PYX_ERR(2, 429, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(2, 429, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":427
 *         return self._mknp(self.h1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h1ptr().xWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo1D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":431
 *         return self._mknp(self.h1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_117xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_116xMins, "Histo1D.xMins(self)\nAll x low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_117xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_117xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_116xMins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_117xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_116xMins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_116xMins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Histo1D.pyx":433
 *     def xMins(self):
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 433, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 433, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 433, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 433, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 433, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 433, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 433, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 433, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 433, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":431
 *         return self._mknp(self.h1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":435
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_119xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_118xMaxs, "Histo1D.xMaxs(self)\nAll x high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_119xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_119xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_118xMaxs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_119xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_118xMaxs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_118xMaxs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Histo1D.pyx":437
 *     def xMaxs(self):
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xMids(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 437, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 437, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 437, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 437, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 437, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 437, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 437, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":435
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":439
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_121xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_120xMids, "Histo1D.xMids(self)\nAll x bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_121xMids = {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_121xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_120xMids};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_121xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMids (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMids", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMids", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_120xMids(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_120xMids(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMids", 0);

  /* "include/Histo1D.pyx":441
 *     def xMids(self):
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xFoci(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 441, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 441, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 441, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 441, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 441, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 441, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 441, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 441, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 441, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":439
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":443
 *         return self._mknp([b.xMid() for b in self.bins()])
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_123xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_122xFoci, "Histo1D.xFoci(self)\nAll x bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_123xFoci = {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_123xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_122xFoci};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_123xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFoci (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFoci", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFoci", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_122xFoci(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_122xFoci(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFoci", 0);

  /* "include/Histo1D.pyx":445
 *     def xFoci(self):
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self, foci=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 445, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 445, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 445, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 445, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 445, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 445, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":443
 *         return self._mknp([b.xMid() for b in self.bins()])
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":447
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_125xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_124xVals, "Histo1D.xVals(self, foci=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_125xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_125xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_124xVals};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_125xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 447, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVals") < 0)) __PYX_ERR(2, 447, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVals", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 447, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_124xVals(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_foci);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_124xVals(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_foci) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Histo1D.pyx":448
 * 
 *     def xVals(self, foci=False):
 *         return self.xFoci() if foci else self.xMids()             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self, foci=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 448, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 448, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 448, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":447
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":450
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_127xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_126xErrs, "Histo1D.xErrs(self, foci=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_127xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_127xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_126xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_127xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 450, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xErrs") < 0)) __PYX_ERR(2, 450, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xErrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 450, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_126xErrs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_foci);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_126xErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_foci) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Histo1D.pyx":451
 * 
 *     def xErrs(self, foci=False):
 *         if foci:             # <<<<<<<<<<<<<<
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(2, 451, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo1D.pyx":452
 *     def xErrs(self, foci=False):
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 452, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 452, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 452, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 452, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 452, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(2, 452, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "include/Histo1D.pyx":451
 * 
 *     def xErrs(self, foci=False):
 *         if foci:             # <<<<<<<<<<<<<<
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  }

  /* "include/Histo1D.pyx":454
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 454, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 454, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 454, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(2, 454, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 454, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 454, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 454, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "include/Histo1D.pyx":450
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":456
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_129xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_128xMin, "Histo1D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_129xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_129xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_128xMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_129xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_128xMin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_128xMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Histo1D.pyx":458
 *     def xMin(self):
 *         """Lowest x value."""
 *         return min(self.xMins())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":456
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":460
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_131xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_130xMax, "Histo1D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_131xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_131xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_130xMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_131xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_130xMax(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_130xMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Histo1D.pyx":462
 *     def xMax(self):
 *         """Highest x value."""
 *         return max(self.xMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":460
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":465
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_133sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_132sumWs, "Histo1D.sumWs(self)\nAll sumW values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_133sumWs = {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_133sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_132sumWs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_133sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_132sumWs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_132sumWs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWs", 0);

  /* "include/Histo1D.pyx":467
 *     def sumWs(self):
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 467, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 467, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 467, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 467, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 467, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 467, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 467, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":468
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def heights(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":465
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":470
 *         return rtn
 * 
 *     def heights(self):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         return self._mknp([b.height() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_135heights(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_134heights, "Histo1D.heights(self)\nAll y heights of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_135heights = {"heights", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_135heights, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_134heights};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_135heights(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heights (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("heights", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "heights", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_134heights(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_134heights(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heights", 0);

  /* "include/Histo1D.pyx":472
 *     def heights(self):
 *         """All y heights of the histo."""
 *         return self._mknp([b.height() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def areas(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 472, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 472, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 472, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 472, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 472, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_height); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 472, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 472, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 472, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":470
 *         return rtn
 * 
 *     def heights(self):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         return self._mknp([b.height() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.heights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":474
 *         return self._mknp([b.height() for b in self.bins()])
 * 
 *     def areas(self):             # <<<<<<<<<<<<<<
 *         """All areas of the histo."""
 *         return self._mknp([b.area() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_137areas(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_136areas, "Histo1D.areas(self)\nAll areas of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_137areas = {"areas", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_137areas, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_136areas};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_137areas(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areas (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("areas", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "areas", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_136areas(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_136areas(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areas", 0);

  /* "include/Histo1D.pyx":476
 *     def areas(self):
 *         """All areas of the histo."""
 *         return self._mknp([b.area() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def yVals(self, area=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 476, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 476, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 476, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 476, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 476, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 476, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_area); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 476, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":474
 *         return self._mknp([b.height() for b in self.bins()])
 * 
 *     def areas(self):             # <<<<<<<<<<<<<<
 *         """All areas of the histo."""
 *         return self._mknp([b.area() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.areas", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":478
 *         return self._mknp([b.area() for b in self.bins()])
 * 
 *     def yVals(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areas() if area else self.heights()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_139yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_138yVals, "Histo1D.yVals(self, area=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_139yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_139yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_138yVals};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_139yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 478, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yVals") < 0)) __PYX_ERR(2, 478, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVals", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 478, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_138yVals(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_138yVals(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Histo1D.pyx":479
 * 
 *     def yVals(self, area=False):
 *         return self.areas() if area else self.heights()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_area); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 479, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_areas); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 479, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_heights); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 479, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 479, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":478
 *         return self._mknp([b.area() for b in self.bins()])
 * 
 *     def yVals(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areas() if area else self.heights()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":482
 * 
 * 
 *     def heightErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_141heightErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_140heightErrs, "Histo1D.heightErrs(self)\nAll height errors of the histo.\n\n        TODO: asymm arg / heightErrsMinus/Plus?\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_141heightErrs = {"heightErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_141heightErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_140heightErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_141heightErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heightErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("heightErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "heightErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_140heightErrs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_140heightErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heightErrs", 0);

  /* "include/Histo1D.pyx":487
 *         TODO: asymm arg / heightErrsMinus/Plus?
 *         """
 *         return self._mknp([b.heightErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def areaErrs(self): #, asymm=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 487, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 487, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 487, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 487, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 487, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 487, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_heightErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 487, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 487, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":482
 * 
 * 
 *     def heightErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.heightErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":489
 *         return self._mknp([b.heightErr() for b in self.bins()])
 * 
 *     def areaErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All area errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_143areaErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_142areaErrs, "Histo1D.areaErrs(self)\nAll area errors of the histo.\n\n        TODO: asymm arg / areaErrsMinus/Plus?\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_143areaErrs = {"areaErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_143areaErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_142areaErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_143areaErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("areaErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("areaErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "areaErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_142areaErrs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_142areaErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("areaErrs", 0);

  /* "include/Histo1D.pyx":498
 *         #    pass
 *         #else:
 *         return self._mknp([b.areaErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def relErrs(self): #, asymm=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 498, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 498, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 498, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 498, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 498, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 498, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_areaErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 498, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":489
 *         return self._mknp([b.heightErr() for b in self.bins()])
 * 
 *     def areaErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All area errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.areaErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":500
 *         return self._mknp([b.areaErr() for b in self.bins()])
 * 
 *     def relErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_145relErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_144relErrs, "Histo1D.relErrs(self)\nAll relative errors of the histo.\n\n        TODO: asymm arg / areaErrsMinus/Plus?\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_145relErrs = {"relErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_145relErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_144relErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_145relErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_144relErrs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_144relErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrs", 0);

  /* "include/Histo1D.pyx":505
 *         TODO: asymm arg / areaErrsMinus/Plus?
 *         """
 *         return self._mknp([b.relErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self, area=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 505, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 505, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 505, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(2, 505, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 505, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 505, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_relErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 505, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 505, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":500
 *         return self._mknp([b.areaErr() for b in self.bins()])
 * 
 *     def relErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo1D.relErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":507
 *         return self._mknp([b.relErr() for b in self.bins()])
 * 
 *     def yErrs(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areaErrs() if area else self.heightErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_147yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_146yErrs, "Histo1D.yErrs(self, area=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_147yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_147yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_146yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_147yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 507, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yErrs") < 0)) __PYX_ERR(2, 507, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yErrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 507, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_146yErrs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_146yErrs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Histo1D.pyx":508
 * 
 *     def yErrs(self, area=False):
 *         return self.areaErrs() if area else self.heightErrs()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_area); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(2, 508, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_areaErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_heightErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":507
 *         return self._mknp([b.relErr() for b in self.bins()])
 * 
 *     def yErrs(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areaErrs() if area else self.heightErrs()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo1D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":511
 * 
 * 
 *     def yMins(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_149yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_148yMins, "Histo1D.yMins(self, area=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_149yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_149yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_148yMins};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_149yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 511, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMins") < 0)) __PYX_ERR(2, 511, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMins", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 511, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_148yMins(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_148yMins(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_v_ys = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Histo1D.pyx":512
 * 
 *     def yMins(self, area=False):
 *         ys = self.yVals(area)             # <<<<<<<<<<<<<<
 *         es = self.yErrs(area)
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_ys = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":513
 *     def yMins(self, area=False):
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)             # <<<<<<<<<<<<<<
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 513, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":514
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self, area=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_ys);
  __Pyx_GIVEREF(__pyx_v_ys);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ys);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 514, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 514, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 514, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 514, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 514, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 514, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(2, 514, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(2, 514, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(2, 514, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Subtract(__pyx_v_y, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 514, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":511
 * 
 * 
 *     def yMins(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo1D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ys);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":516
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_151yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_150yMaxs, "Histo1D.yMaxs(self, area=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_151yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_151yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_150yMaxs};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_151yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(2, 516, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMaxs") < 0)) __PYX_ERR(2, 516, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMaxs", 0, 0, 1, __pyx_nargs); __PYX_ERR(2, 516, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_150yMaxs(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_150yMaxs(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_v_ys = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Histo1D.pyx":517
 * 
 *     def yMaxs(self, area=False):
 *         ys = self.yVals(area)             # <<<<<<<<<<<<<<
 *         es = self.yErrs(area)
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 517, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_ys = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":518
 *     def yMaxs(self, area=False):
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)             # <<<<<<<<<<<<<<
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 518, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo1D.pyx":519
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_ys);
  __Pyx_GIVEREF(__pyx_v_ys);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ys);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(2, 519, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 519, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 519, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(2, 519, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 519, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(2, 519, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(2, 519, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(2, 519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(2, 519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(2, 519, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(2, 519, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(2, 519, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Add(__pyx_v_y, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(2, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(2, 519, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 519, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":516
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo1D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ys);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":521
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_153yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_152yMin, "Histo1D.yMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_153yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_153yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_152yMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_153yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_152yMin(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_152yMin(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Histo1D.pyx":523
 *     def yMin(self):
 *         """Lowest x value."""
 *         return min(self.yMins())             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 523, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":521
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo1D.pyx":525
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_155yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_154yMax, "Histo1D.yMax(self)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_155yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_155yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_154yMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_155yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_154yMax(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_154yMax(struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Histo1D.pyx":527
 *     def yMax(self):
 *         """Highest y value."""
 *         return max(self.yMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo1D.pyx":525
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo1D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_157__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_156__reduce_cython__, "Histo1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_157__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_157__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_156__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_157__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_156__reduce_cython__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_156__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_159__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo1D_158__setstate_cython__, "Histo1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo1D_159__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_159__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_158__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Histo1D_159__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo1D_158__setstate_cython__(((struct __pyx_obj_4yoda_4core_Histo1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo1D_158__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":30
 *     """
 * 
 *     cdef inline c.Profile1D* p1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Profile1D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Profile1D *__pyx_f_4yoda_4core_9Profile1D_p1ptr(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  YODA::Profile1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("p1ptr", 0);

  /* "include/Profile1D.pyx":31
 * 
 *     cdef inline c.Profile1D* p1ptr(self) except NULL:
 *         return <c.Profile1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(19, 31, __pyx_L1_error)
  __pyx_r = ((YODA::Profile1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":30
 *     """
 * 
 *     cdef inline c.Profile1D* p1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Profile1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.p1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":34
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Profile1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Profile1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D___init__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_9Profile1D___init__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Profile1D.pyx":35
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init2(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile1D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile1D__init3); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile1D__init5); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Profile1D.pyx":34
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":37
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_3_Profile1D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_2__init2, "Profile1D.__init2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_3_Profile1D__init2 = {"_Profile1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_3_Profile1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_2__init2};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_3_Profile1D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile1D__init2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 37, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 37, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile1D__init2") < 0)) __PYX_ERR(19, 37, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile1D__init2", 0, 0, 2, __pyx_nargs); __PYX_ERR(19, 37, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_2__init2(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_2__init2(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Profile1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile1D__init2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile1D.pyx":38
 * 
 *     def __init2(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Profile1D.pyx":39
 *     def __init2(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(
 *             self, new c.Profile1D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Profile1D.pyx":41
 *         title = title
 *         cutil.set_owned_ptr(
 *             self, new c.Profile1D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 41, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 41, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Profile1D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 41, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":40
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(             # <<<<<<<<<<<<<<
 *             self, new c.Profile1D(<string>path, <string>title))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Profile1D.pyx":37
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":44
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_5_Profile1D__init3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_4__init3, "Profile1D.__init3(self, bins_or_edges, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_5_Profile1D__init3 = {"_Profile1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_5_Profile1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_4__init3};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_5_Profile1D__init3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_bins_or_edges = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile1D__init3 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bins_or_edges,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_bins_or_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 44, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 44, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 44, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile1D__init3") < 0)) __PYX_ERR(19, 44, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_bins_or_edges = values[0];
    __pyx_v_path = values[1];
    __pyx_v_title = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile1D__init3", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 44, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_4__init3(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_bins_or_edges, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_9Profile1D_17_Profile1D__init3_2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/Profile1D.pyx":51
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Profile1D(edges, <string>path, <string>title))
 *         except:
 */

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_17_Profile1D__init3_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_3_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(19, 51, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_9Profile1D_17_Profile1D__init3_2generator2, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_Profile1D__init3_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(19, 51, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init3.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_9Profile1D_17_Profile1D__init3_2generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(19, 51, __pyx_L1_error)
  __pyx_r = PyList_New(0); if (unlikely(!__pyx_r)) __PYX_ERR(19, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(19, 51, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 51, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(19, 51, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 51, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(19, 51, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 51, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 51, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_x);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_x, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyNumber_Float(__pyx_cur_scope->__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    if (unlikely(__Pyx_ListComp_Append(__pyx_r, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 51, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":44
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_4__init3(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_bins_or_edges, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  std::vector<double>  __pyx_v_edges;
  PyObject *__pyx_v_bins = NULL;
  PyObject *__pyx_gb_4yoda_4core_9Profile1D_17_Profile1D__init3_2generator2 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  std::vector<double>  __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::Profile1D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile1D__init3", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile1D.pyx":47
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Profile1D.pyx":48
 *         cdef vector[double] edges
 *         try:
 *             path  = path             # <<<<<<<<<<<<<<
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 */
      __Pyx_INCREF(__pyx_v_path);
      __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

      /* "include/Profile1D.pyx":49
 *         try:
 *             path  = path
 *             title = title             # <<<<<<<<<<<<<<
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)
 */
      __Pyx_INCREF(__pyx_v_title);
      __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

      /* "include/Profile1D.pyx":51
 *             title = title
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)             # <<<<<<<<<<<<<<
 *             cutil.set_owned_ptr(self, new c.Profile1D(edges, <string>path, <string>title))
 *         except:
 */
      __pyx_t_4 = __pyx_pf_4yoda_4core_9Profile1D_17_Profile1D__init3_genexpr(NULL, __pyx_v_bins_or_edges); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 51, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 51, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = __pyx_convert_vector_from_py_double(__pyx_t_5); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 51, __pyx_L3_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_edges = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

      /* "include/Profile1D.pyx":52
 *             ## If float conversions work for all elements, it's a list of edges:
 *             edges = list(float(x) for x in bins_or_edges)
 *             cutil.set_owned_ptr(self, new c.Profile1D(edges, <string>path, <string>title))             # <<<<<<<<<<<<<<
 *         except:
 *             ## Assume it's a list of HistoBin1D
 */
      __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 52, __pyx_L3_error)
      __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 52, __pyx_L3_error)
      try {
        __pyx_t_9 = new YODA::Profile1D(__pyx_v_edges, ((std::string)__pyx_t_7), ((std::string)__pyx_t_8));
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(19, 52, __pyx_L3_error)
      }
      __pyx_t_5 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 52, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "include/Profile1D.pyx":47
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/Profile1D.pyx":53
 *             edges = list(float(x) for x in bins_or_edges)
 *             cutil.set_owned_ptr(self, new c.Profile1D(edges, <string>path, <string>title))
 *         except:             # <<<<<<<<<<<<<<
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_10) < 0) __PYX_ERR(19, 53, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_10);

      /* "include/Profile1D.pyx":55
 *         except:
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges             # <<<<<<<<<<<<<<
 *             self.__init2(path, title)
 *             self.addBins(bins)
 */
      __Pyx_INCREF(__pyx_v_bins_or_edges);
      __pyx_v_bins = __pyx_v_bins_or_edges;

      /* "include/Profile1D.pyx":56
 *             ## Assume it's a list of HistoBin1D
 *             bins = bins_or_edges
 *             self.__init2(path, title)             # <<<<<<<<<<<<<<
 *             self.addBins(bins)
 * 
 */
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile1D__init2); if (unlikely(!__pyx_t_12)) __PYX_ERR(19, 56, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_14 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_13, __pyx_v_path, __pyx_v_title};
        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 2+__pyx_t_14);
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 56, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

      /* "include/Profile1D.pyx":57
 *             bins = bins_or_edges
 *             self.__init2(path, title)
 *             self.addBins(bins)             # <<<<<<<<<<<<<<
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):
 */
      __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addBins); if (unlikely(!__pyx_t_12)) __PYX_ERR(19, 57, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_13 = NULL;
      __pyx_t_14 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
        __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
        if (likely(__pyx_t_13)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
          __Pyx_INCREF(__pyx_t_13);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_12, function);
          __pyx_t_14 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_bins};
        __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_14, 1+__pyx_t_14);
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 57, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L4_exception_handled;
    }

    /* "include/Profile1D.pyx":47
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 *         try:             # <<<<<<<<<<<<<<
 *             path  = path
 *             title = title
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Profile1D.pyx":44
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_bins);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_9Profile1D_17_Profile1D__init3_2generator2);
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":59
 *             self.addBins(bins)
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_7_Profile1D__init5(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_6__init5, "Profile1D.__init5(self, size_t nbins, double lower, double upper, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_7_Profile1D__init5 = {"_Profile1D__init5", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_7_Profile1D__init5, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_6__init5};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_7_Profile1D__init5(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_nbins;
  double __pyx_v_lower;
  double __pyx_v_upper;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile1D__init5 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_lower,&__pyx_n_s_upper,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[3] = ((PyObject *)__pyx_kp_s__2);
    values[4] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_lower)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile1D__init5", 0, 3, 5, 1); __PYX_ERR(19, 59, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_upper)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile1D__init5", 0, 3, 5, 2); __PYX_ERR(19, 59, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile1D__init5") < 0)) __PYX_ERR(19, 59, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nbins = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_nbins == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
    __pyx_v_lower = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_lower == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
    __pyx_v_upper = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_upper == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 59, __pyx_L3_error)
    __pyx_v_path = values[3];
    __pyx_v_title = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile1D__init5", 0, 3, 5, __pyx_nargs); __PYX_ERR(19, 59, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_6__init5(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_nbins, __pyx_v_lower, __pyx_v_upper, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_6__init5(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, size_t __pyx_v_nbins, double __pyx_v_lower, double __pyx_v_upper, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Profile1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile1D__init5", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile1D.pyx":60
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Profile1D.pyx":61
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(
 *             self, new c.Profile1D(nbins, lower, upper, <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Profile1D.pyx":63
 *         title = title
 *         cutil.set_owned_ptr(
 *             self, new c.Profile1D(nbins, lower, upper, <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 63, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Profile1D(__pyx_v_nbins, __pyx_v_lower, __pyx_v_upper, ((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 63, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":62
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(             # <<<<<<<<<<<<<<
 *             self, new c.Profile1D(nbins, lower, upper, <string>path, <string>title))
 * 
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Profile1D.pyx":59
 *             self.addBins(bins)
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D._Profile1D__init5", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":66
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.p1ptr().bins().size()
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Profile1D_9__len__(PyObject *__pyx_v_self); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_8__len__, "Number of bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_9Profile1D_8__len__;
#endif
static Py_ssize_t __pyx_pw_4yoda_4core_9Profile1D_9__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_8__len__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Profile1D_8__len__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Profile1D.pyx":68
 *     def __len__(self):
 *         "Number of bins"
 *         return self.p1ptr().bins().size()             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, i):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 68, __pyx_L1_error)
  __pyx_r = __pyx_t_1->bins().size();
  goto __pyx_L0;

  /* "include/Profile1D.pyx":66
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.p1ptr().bins().size()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":70
 *         return self.p1ptr().bins().size()
 * 
 *     def __getitem__(self, i):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.p1ptr().bins().size())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_10__getitem__, "Direct access to bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_9Profile1D_10__getitem__;
#endif
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_i) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_10__getitem__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((PyObject *)__pyx_v_i));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_10__getitem__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_i) {
  size_t __pyx_v_ii;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Profile1D *__pyx_t_2;
  size_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Profile1D.pyx":72
 *     def __getitem__(self, i):
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.p1ptr().bins().size())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(ii), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_i); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(19, 72, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 72, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_2->bins().size()); if (unlikely(__pyx_t_3 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(19, 72, __pyx_L1_error)
  __pyx_v_ii = __pyx_t_3;

  /* "include/Profile1D.pyx":73
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.p1ptr().bins().size())
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(ii), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 73, __pyx_L1_error)
  __pyx_t_4 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D), (&__pyx_t_2->bin(__pyx_v_ii)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":70
 *         return self.p1ptr().bins().size()
 * 
 *     def __getitem__(self, i):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t ii = cutil.pythonic_index(i, self.p1ptr().bins().size())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":76
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \
 *                (self.__class__.__name__, self.path(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_12__repr__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_12__repr__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Profile1D.pyx":77
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \             # <<<<<<<<<<<<<<
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW())
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Profile1D.pyx":78
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \
 *                (self.__class__.__name__, self.path(),             # <<<<<<<<<<<<<<
 *                 len(self.bins()), self.sumW())
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 78, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }

  /* "include/Profile1D.pyx":79
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(19, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }

  /* "include/Profile1D.pyx":78
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \
 *                (self.__class__.__name__, self.path(),             # <<<<<<<<<<<<<<
 *                 len(self.bins()), self.sumW())
 * 
 */
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;

  /* "include/Profile1D.pyx":77
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \             # <<<<<<<<<<<<<<
 *                (self.__class__.__name__, self.path(),
 *                 len(self.bins()), self.sumW())
 */
  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_bins_sumw_0_2g, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":76
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % \
 *                (self.__class__.__name__, self.path(),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Profile1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":82
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_14reset, "Profile1D.reset(self)\nNone -> None.\n        Reset the histogram but leave the bin structure.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_15reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_14reset};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_14reset(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_14reset(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Profile1D.pyx":85
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 *         self.p1ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 85, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 85, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":82
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":87
 *         self.p1ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile1D.
 *         Clone this Profile1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_16clone, "Profile1D.clone(self)\nNone -> Profile1D.\n        Clone this Profile1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_16clone};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_16clone(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_16clone(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  YODA::Profile1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Profile1D.pyx":90
 *         """None -> Profile1D.
 *         Clone this Profile1D."""
 *         return cutil.new_owned_cls(Profile1D, self.p1ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 90, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 90, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Profile1D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":87
 *         self.p1ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile1D.
 *         Clone this Profile1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":93
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x & y values and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_18fill, "Profile1D.fill(self, x, y, weight=1.0, fraction=1.0)\n(x,y,[w]) -> None.\n        Fill with given x & y values and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_19fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_18fill};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_float_1_0);
    values[3] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(19, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 93, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(19, 93, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_weight = values[2];
    __pyx_v_fraction = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(19, 93, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_18fill(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_18fill(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Profile1D.pyx":96
 *         """(x,y,[w]) -> None.
 *         Fill with given x & y values and optional weight."""
 *         self.p1ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 96, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 96, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 96, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 96, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 96, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 96, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":93
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x & y values and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":98
 *         self.p1ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,y,[w]) -> None.
 *         Fill bin ix with y value and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_20fillBin, "Profile1D.fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0)\n(ix,y,[w]) -> None.\n        Fill bin ix with y value and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_21fillBin = {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_20fillBin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_ix;
  double __pyx_v_y;
  double __pyx_v_weight;
  double __pyx_v_fraction;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ix,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ix)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fillBin", 0, 2, 4, 1); __PYX_ERR(19, 98, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fillBin") < 0)) __PYX_ERR(19, 98, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ix = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_ix == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
    __pyx_v_y = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_y == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_weight = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_weight == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
    } else {
      __pyx_v_weight = ((double)1.0);
    }
    if (values[3]) {
      __pyx_v_fraction = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_fraction == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 98, __pyx_L3_error)
    } else {
      __pyx_v_fraction = ((double)1.0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fillBin", 0, 2, 4, __pyx_nargs); __PYX_ERR(19, 98, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_20fillBin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_ix, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_20fillBin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, size_t __pyx_v_ix, double __pyx_v_y, double __pyx_v_weight, double __pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillBin", 0);

  /* "include/Profile1D.pyx":101
 *         """(ix,y,[w]) -> None.
 *         Fill bin ix with y value and optional weight."""
 *         self.p1ptr().fillBin(ix, y, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 101, __pyx_L1_error)
  try {
    __pyx_t_1->fillBin(__pyx_v_ix, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 101, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":98
 *         self.p1ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,y,[w]) -> None.
 *         Fill bin ix with y value and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":104
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_22totalDbn, "Profile1D.totalDbn(self)\n() -> Dbn2D\n        The Dbn2D representing the total distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_23totalDbn = {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_22totalDbn};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalDbn (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("totalDbn", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "totalDbn", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_22totalDbn(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_22totalDbn(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("totalDbn", 0);

  /* "include/Profile1D.pyx":107
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Profile1D.pyx":108
 *         The Dbn2D representing the total distribution."""
 *         return cutil.new_borrowed_cls(
 *             Dbn2D, &self.p1ptr().totalDbn(), self)             # <<<<<<<<<<<<<<
 * 
 *     def underflow(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 108, __pyx_L1_error)

  /* "include/Profile1D.pyx":107
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), (&__pyx_t_1->totalDbn()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":104
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Profile1D.totalDbn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":110
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_25underflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_24underflow, "Profile1D.underflow(self)\n() -> Dbn2D\n        The Dbn2D representing the underflow distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_25underflow = {"underflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_25underflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_24underflow};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_25underflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("underflow (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("underflow", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "underflow", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_24underflow(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_24underflow(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("underflow", 0);

  /* "include/Profile1D.pyx":113
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Profile1D.pyx":114
 *         The Dbn2D representing the underflow distribution."""
 *         return cutil.new_borrowed_cls(
 *             Dbn2D, &self.p1ptr().underflow(), self)             # <<<<<<<<<<<<<<
 * 
 *     def overflow(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 114, __pyx_L1_error)

  /* "include/Profile1D.pyx":113
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), (&__pyx_t_1->underflow()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":110
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Profile1D.underflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":116
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_27overflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_26overflow, "Profile1D.overflow(self)\n() -> Dbn2D\n        The Dbn2D representing the overflow distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_27overflow = {"overflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_27overflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_26overflow};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_27overflow(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("overflow (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("overflow", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "overflow", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_26overflow(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_26overflow(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("overflow", 0);

  /* "include/Profile1D.pyx":119
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().overflow(), self)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Profile1D.pyx":120
 *         The Dbn2D representing the overflow distribution."""
 *         return cutil.new_borrowed_cls(
 *             Dbn2D, &self.p1ptr().overflow(), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 120, __pyx_L1_error)

  /* "include/Profile1D.pyx":119
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn2D, &self.p1ptr().overflow(), self)
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), (&__pyx_t_1->overflow()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":116
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Profile1D.overflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":123
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_29numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_28numEntries, "Profile1D.numEntries(self, includeoverflows=True)\n([bool]) -> float\n        Number of times this histogram was filled, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_29numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_29numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_28numEntries};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_29numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 123, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "numEntries") < 0)) __PYX_ERR(19, 123, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_28numEntries(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_28numEntries(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Profile1D.pyx":126
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 *         return self.p1ptr().numEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 126, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 126, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_1->numEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":123
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":128
 *         return self.p1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_31effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_30effNumEntries, "Profile1D.effNumEntries(self, includeoverflows=True)\n([bool]) -> float\n        Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_31effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_31effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_30effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_31effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 128, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "effNumEntries") < 0)) __PYX_ERR(19, 128, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 128, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_30effNumEntries(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_30effNumEntries(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Profile1D.pyx":131
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 *         return self.p1ptr().effNumEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 131, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 131, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->effNumEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":128
 *         return self.p1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":133
 *         return self.p1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_33sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_32sumW, "Profile1D.sumW(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_33sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_33sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_32sumW};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_33sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 133, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW") < 0)) __PYX_ERR(19, 133, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 133, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_32sumW(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_32sumW(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Profile1D.pyx":136
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 *         return self.p1ptr().sumW(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 136, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 136, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":133
 *         return self.p1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":138
 *         return self.p1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_35sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_34sumW2, "Profile1D.sumW2(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_35sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_35sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_34sumW2};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_35sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW2") < 0)) __PYX_ERR(19, 138, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_34sumW2(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_34sumW2(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Profile1D.pyx":141
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 *         return self.p1ptr().sumW2(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 141, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 141, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW2(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":138
 *         return self.p1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":144
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_37xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_36xMean, "Profile1D.xMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_37xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_37xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_36xMean};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_37xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 144, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMean") < 0)) __PYX_ERR(19, 144, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 144, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_36xMean(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_36xMean(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/Profile1D.pyx":147
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 *         return self.p1ptr().xMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 147, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 147, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":144
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":149
 *         return self.p1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_39xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_38xVariance, "Profile1D.xVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_39xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_39xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_38xVariance};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_39xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 149, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVariance") < 0)) __PYX_ERR(19, 149, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 149, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_38xVariance(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_38xVariance(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/Profile1D.pyx":152
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 *         return self.p1ptr().xVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 152, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 152, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":149
 *         return self.p1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":154
 *         return self.p1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_41xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_40xStdDev, "Profile1D.xStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_41xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_41xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_40xStdDev};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_41xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 154, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdDev") < 0)) __PYX_ERR(19, 154, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 154, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_40xStdDev(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_40xStdDev(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/Profile1D.pyx":157
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 *         return self.p1ptr().xStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 157, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 157, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":154
 *         return self.p1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":159
 *         return self.p1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_43xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_42xStdErr, "Profile1D.xStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_43xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_43xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_42xStdErr};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_43xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 159, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdErr") < 0)) __PYX_ERR(19, 159, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 159, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_42xStdErr(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_42xStdErr(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/Profile1D.pyx":162
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 *         return self.p1ptr().xStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 162, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 162, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":159
 *         return self.p1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":164
 *         return self.p1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_45xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_44xRMS, "Profile1D.xRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_45xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_45xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_44xRMS};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_45xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 164, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xRMS") < 0)) __PYX_ERR(19, 164, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 164, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_44xRMS(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_44xRMS(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/Profile1D.pyx":167
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 *         return self.p1ptr().xRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 167, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 167, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":164
 *         return self.p1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":170
 * 
 * 
 *     def scaleW(self, double w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_47scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_46scaleW, "Profile1D.scaleW(self, double w)\n(float) -> None.\n        Rescale the weights in this histogram by the factor w.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_47scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_47scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_46scaleW};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_47scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_w;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 170, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(19, 170, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_w == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 170, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 170, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_46scaleW(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_46scaleW(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, double __pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Profile1D.pyx":173
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 *         self.p1ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, double f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 173, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_v_w);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 173, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":170
 * 
 * 
 *     def scaleW(self, double w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":175
 *         self.p1ptr().scaleW(w)
 * 
 *     def scaleY(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the y-direction (profiled value) in this histogram by the factor f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_49scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_48scaleY, "Profile1D.scaleY(self, double f)\n(float) -> None.\n        Scale the y-direction (profiled value) in this histogram by the factor f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_49scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_49scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_48scaleY};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_49scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_f;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 175, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(19, 175, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_f == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 175, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 175, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_48scaleY(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_48scaleY(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, double __pyx_v_f) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Profile1D.pyx":178
 *         """(float) -> None.
 *         Scale the y-direction (profiled value) in this histogram by the factor f."""
 *         self.p1ptr().scaleY(f)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 178, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_v_f);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 178, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":175
 *         self.p1ptr().scaleW(w)
 * 
 *     def scaleY(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the y-direction (profiled value) in this histogram by the factor f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":181
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_51xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_50xMin, "Profile1D.xMin(self)\nLow x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_51xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_51xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_50xMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_51xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_50xMin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_50xMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Profile1D.pyx":183
 *     def xMin(self):
 *         """Low x edge of the histo."""
 *         return self.p1ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 183, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 183, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":181
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p1ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":185
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_53xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_52xMax, "Profile1D.xMax(self)\nHigh x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_53xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_53xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_52xMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_53xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_52xMax(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_52xMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Profile1D.pyx":187
 *     def xMax(self):
 *         """High x edge of the histo."""
 *         return self.p1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def numBins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 187, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 187, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":185
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p1ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":189
 *         return self.p1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_55numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_54numBins, "Profile1D.numBins(self)\n() -> int\n        Number of bins (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_55numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_55numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_54numBins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_55numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_54numBins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_54numBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 0);

  /* "include/Profile1D.pyx":192
 *         """() -> int
 *         Number of bins (not including overflows)."""
 *         return self.p1ptr().numBins()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 192, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 192, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":189
 *         return self.p1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":194
 *         return self.p1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins on the x-axis (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_57numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_56numBinsX, "Profile1D.numBinsX(self)\n() -> int\n        Number of bins on the x-axis (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_57numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_57numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_56numBinsX};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_57numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_56numBinsX(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_56numBinsX(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 0);

  /* "include/Profile1D.pyx":197
 *         """() -> int
 *         Number of bins on the x-axis (not including overflows)."""
 *         return self.p1ptr().numBinsX()             # <<<<<<<<<<<<<<
 * 
 *     def bins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 197, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 197, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":194
 *         return self.p1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins on the x-axis (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":199
 *         return self.p1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_59bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_58bins, "Profile1D.bins(self)\nAccess the ordered bins list.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_59bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_59bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_58bins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_59bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("bins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_58bins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_58bins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 0);

  /* "include/Profile1D.pyx":201
 *     def bins(self):
 *         """Access the ordered bins list."""
 *         return list(self)             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":199
 *         return self.p1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile1D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":203
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_61bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_60bin, "Profile1D.bin(self, i)\nGet the i'th bin");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_61bin = {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_61bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_60bin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_61bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 203, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bin") < 0)) __PYX_ERR(19, 203, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 203, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_60bin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_60bin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 0);

  /* "include/Profile1D.pyx":206
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def binIndexAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 206, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 206, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D), (&__pyx_t_1->bin(__pyx_t_2)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":203
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":208
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.p1ptr().binIndexAt(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_63binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_62binIndexAt, "Profile1D.binIndexAt(self, x)\nGet the bin index containing position x");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_63binIndexAt = {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_63binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_62binIndexAt};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_63binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binIndexAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 208, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binIndexAt") < 0)) __PYX_ERR(19, 208, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 208, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_62binIndexAt(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_62binIndexAt(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binIndexAt", 0);

  /* "include/Profile1D.pyx":210
 *     def binIndexAt(self, x):
 *         """Get the bin index containing position x"""
 *         return self.p1ptr().binIndexAt(x)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 210, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 210, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->binIndexAt(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 210, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":208
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.p1ptr().binIndexAt(x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":212
 *         return self.p1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_65binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_64binAt, "Profile1D.binAt(self, x)\nGet the bin containing position x");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_65binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_65binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_64binAt};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_65binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 212, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binAt") < 0)) __PYX_ERR(19, 212, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 212, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_64binAt(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_64binAt(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 0);

  /* "include/Profile1D.pyx":217
 *         # return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().binAt(x), self)
 *         # TODO: need out-of-range check to return None?
 *         return self.bin(self.binIndexAt(x))             # <<<<<<<<<<<<<<
 * 
 *     def addBin(self, low, high):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_binIndexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_x};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 217, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":212
 *         return self.p1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":219
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_67addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_66addBin, "Profile1D.addBin(self, low, high)\nAdd a bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_67addBin = {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_67addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_66addBin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_67addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_low = 0;
  PyObject *__pyx_v_high = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_low,&__pyx_n_s_high,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_low)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 219, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_high)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 219, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 2, 2, 1); __PYX_ERR(19, 219, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBin") < 0)) __PYX_ERR(19, 219, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_low = values[0];
    __pyx_v_high = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBin", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 219, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_66addBin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_low, __pyx_v_high);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_66addBin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_low, PyObject *__pyx_v_high) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBin", 0);

  /* "include/Profile1D.pyx":221
 *     def addBin(self, low, high):
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 221, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_low); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 221, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_high); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 221, __pyx_L1_error)
  try {
    __pyx_t_1->addBin(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 221, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":222
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def addBins(self, edges):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":219
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":224
 *         return self
 * 
 *     def addBins(self, edges):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_69addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_68addBins, "Profile1D.addBins(self, edges)\nAdd several bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_69addBins = {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_69addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_68addBins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_69addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 224, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBins") < 0)) __PYX_ERR(19, 224, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_edges = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBins", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 224, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_68addBins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_68addBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  std::vector<double>  __pyx_v_cedges;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  double __pyx_t_5;
  YODA::Profile1D *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBins", 0);

  /* "include/Profile1D.pyx":228
 *         # TODO: simplify / make consistent
 *         cdef vector[double] cedges
 *         for i in edges:             # <<<<<<<<<<<<<<
 *             cedges.push_back(i)
 *         self.p1ptr().addBins(cedges)
 */
  if (likely(PyList_CheckExact(__pyx_v_edges)) || PyTuple_CheckExact(__pyx_v_edges)) {
    __pyx_t_1 = __pyx_v_edges; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 228, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(19, 228, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 228, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(19, 228, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 228, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 228, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Profile1D.pyx":229
 *         cdef vector[double] cedges
 *         for i in edges:
 *             cedges.push_back(i)             # <<<<<<<<<<<<<<
 *         self.p1ptr().addBins(cedges)
 *         return self
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_i); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 229, __pyx_L1_error)
    try {
      __pyx_v_cedges.push_back(__pyx_t_5);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(19, 229, __pyx_L1_error)
    }

    /* "include/Profile1D.pyx":228
 *         # TODO: simplify / make consistent
 *         cdef vector[double] cedges
 *         for i in edges:             # <<<<<<<<<<<<<<
 *             cedges.push_back(i)
 *         self.p1ptr().addBins(cedges)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":230
 *         for i in edges:
 *             cedges.push_back(i)
 *         self.p1ptr().addBins(cedges)             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_6 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 230, __pyx_L1_error)
  try {
    __pyx_t_6->addBins(__pyx_v_cedges);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 230, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":231
 *             cedges.push_back(i)
 *         self.p1ptr().addBins(cedges)
 *         return self             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":224
 *         return self
 * 
 *     def addBins(self, edges):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":234
 * 
 * 
 *     def mergeBins(self, a, b):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_71mergeBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_70mergeBins, "Profile1D.mergeBins(self, a, b)\nmergeBins(ia, ib) -> None.\n        Merge bins from indices ia through ib.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_71mergeBins = {"mergeBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_71mergeBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_70mergeBins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_71mergeBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  PyObject *__pyx_v_b = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mergeBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_b,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 234, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_b)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 234, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("mergeBins", 1, 2, 2, 1); __PYX_ERR(19, 234, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mergeBins") < 0)) __PYX_ERR(19, 234, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_a = values[0];
    __pyx_v_b = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mergeBins", 1, 2, 2, __pyx_nargs); __PYX_ERR(19, 234, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.mergeBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_70mergeBins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_a, __pyx_v_b);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_70mergeBins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mergeBins", 0);

  /* "include/Profile1D.pyx":237
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 *         self.p1ptr().mergeBins(a, b)             # <<<<<<<<<<<<<<
 * 
 *     def rebinBy(self, n, begin=0, end=None):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 237, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_a); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 237, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_b); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 237, __pyx_L1_error)
  try {
    __pyx_t_1->mergeBins(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 237, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":234
 * 
 * 
 *     def mergeBins(self, a, b):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.mergeBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":239
 *         self.p1ptr().mergeBins(a, b)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_73rebinBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_72rebinBy, "Profile1D.rebinBy(self, n, begin=0, end=None)\n(n) -> None.\n        Merge every group of n bins together (between begin and end, if specified).");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_73rebinBy = {"rebinBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_73rebinBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_72rebinBy};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_73rebinBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_n = 0;
  PyObject *__pyx_v_begin = 0;
  PyObject *__pyx_v_end = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_n,&__pyx_n_s_begin,&__pyx_n_s_end,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)Py_None);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_n)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 239, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_begin);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 239, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_end);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 239, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rebinBy") < 0)) __PYX_ERR(19, 239, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_n = values[0];
    __pyx_v_begin = values[1];
    __pyx_v_end = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinBy", 0, 1, 3, __pyx_nargs); __PYX_ERR(19, 239, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.rebinBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_72rebinBy(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_n, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_72rebinBy(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_n, PyObject *__pyx_v_begin, PyObject *__pyx_v_end) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  YODA::Profile1D *__pyx_t_6;
  unsigned int __pyx_t_7;
  size_t __pyx_t_8;
  size_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinBy", 0);
  __Pyx_INCREF(__pyx_v_end);

  /* "include/Profile1D.pyx":242
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:             # <<<<<<<<<<<<<<
 *             end = self.numBins()
 *         self.p1ptr().rebinBy(int(n), begin, end)
 */
  __pyx_t_1 = (__pyx_v_end == Py_None);
  if (__pyx_t_1) {

    /* "include/Profile1D.pyx":243
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:
 *             end = self.numBins()             # <<<<<<<<<<<<<<
 *         self.p1ptr().rebinBy(int(n), begin, end)
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_end, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "include/Profile1D.pyx":242
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 *         if end is None:             # <<<<<<<<<<<<<<
 *             end = self.numBins()
 *         self.p1ptr().rebinBy(int(n), begin, end)
 */
  }

  /* "include/Profile1D.pyx":244
 *         if end is None:
 *             end = self.numBins()
 *         self.p1ptr().rebinBy(int(n), begin, end)             # <<<<<<<<<<<<<<
 * 
 *     def rebinTo(self, edges):
 */
  __pyx_t_6 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 244, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyNumber_Int(__pyx_v_n); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyInt_As_unsigned_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(19, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_8 = __Pyx_PyInt_As_size_t(__pyx_v_begin); if (unlikely((__pyx_t_8 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 244, __pyx_L1_error)
  __pyx_t_9 = __Pyx_PyInt_As_size_t(__pyx_v_end); if (unlikely((__pyx_t_9 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(19, 244, __pyx_L1_error)
  try {
    __pyx_t_6->rebinBy(__pyx_t_7, __pyx_t_8, __pyx_t_9);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 244, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":239
 *         self.p1ptr().mergeBins(a, b)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile1D.rebinBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_end);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":246
 *         self.p1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_75rebinTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_74rebinTo, "Profile1D.rebinTo(self, edges)\n([edges]) -> None.\n        Merge bins to produce the given new edges... which must be a subset of the current ones.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_75rebinTo = {"rebinTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_75rebinTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_74rebinTo};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_75rebinTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_edges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebinTo (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_edges,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_edges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 246, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rebinTo") < 0)) __PYX_ERR(19, 246, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_edges = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebinTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 246, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.rebinTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_74rebinTo(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_edges);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_74rebinTo(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_edges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  std::vector<double>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebinTo", 0);

  /* "include/Profile1D.pyx":249
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 *         self.p1ptr().rebinTo(edges)             # <<<<<<<<<<<<<<
 * 
 *     def rebin(self, arg, **kwargs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 249, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_edges); if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 249, __pyx_L1_error)
  try {
    __pyx_t_1->rebinTo(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 249, __pyx_L1_error)
  }

  /* "include/Profile1D.pyx":246
 *         self.p1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.rebinTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":251
 *         self.p1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_77rebin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_76rebin, "Profile1D.rebin(self, arg, **kwargs)\n(n) -> None or ([edges]) -> None\n        Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_77rebin = {"rebin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_77rebin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_76rebin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_77rebin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_arg = 0;
  PyObject *__pyx_v_kwargs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rebin (wrapper)", 0);
  __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
  __Pyx_GOTREF(__pyx_v_kwargs);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arg,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_arg)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 251, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, __pyx_v_kwargs, values + 0, kwd_pos_args, "rebin") < 0)) __PYX_ERR(19, 251, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_arg = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rebin", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 251, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
  __Pyx_AddTraceback("yoda.core.Profile1D.rebin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_76rebin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_arg, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_76rebin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_arg, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rebin", 0);

  /* "include/Profile1D.pyx":254
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinTo(arg, **kwargs)
 *         else:
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_arg, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(19, 254, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile1D.pyx":255
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):
 *             self.rebinTo(arg, **kwargs)             # <<<<<<<<<<<<<<
 *         else:
 *             self.rebinBy(arg, **kwargs)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinTo); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_arg);
    __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "include/Profile1D.pyx":254
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 *         if hasattr(arg, "__iter__"):             # <<<<<<<<<<<<<<
 *             self.rebinTo(arg, **kwargs)
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile1D.pyx":257
 *             self.rebinTo(arg, **kwargs)
 *         else:
 *             self.rebinBy(arg, **kwargs)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rebinBy); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_arg);
    __Pyx_GIVEREF(__pyx_v_arg);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_arg);
    __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Profile1D.pyx":251
 *         self.p1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.rebin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":260
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Profile1D to a Scatter2D, with y representing
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_79mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_78mkScatter, "Profile1D.mkScatter(self, usefocus=False, usestddev=False, uflow_binwidth=-1, oflow_binwidth=-1)\nNone -> Scatter2D.\n        Convert this Profile1D to a Scatter2D, with y representing\n        mean bin y values and their standard errors (or std deviations if usestddev=True).\n        The remaining optional parameters allow under- and overflow points to be created.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_79mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_79mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_78mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_79mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_usefocus = 0;
  PyObject *__pyx_v_usestddev = 0;
  PyObject *__pyx_v_uflow_binwidth = 0;
  PyObject *__pyx_v_oflow_binwidth = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_usefocus,&__pyx_n_s_usestddev,&__pyx_n_s_uflow_binwidth,&__pyx_n_s_oflow_binwidth,0};
    PyObject* values[4] = {0,0,0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    values[2] = ((PyObject *)__pyx_int_neg_1);
    values[3] = ((PyObject *)__pyx_int_neg_1);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefocus);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 260, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usestddev);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 260, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_uflow_binwidth);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 260, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_oflow_binwidth);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 260, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkScatter") < 0)) __PYX_ERR(19, 260, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_usefocus = values[0];
    __pyx_v_usestddev = values[1];
    __pyx_v_uflow_binwidth = values[2];
    __pyx_v_oflow_binwidth = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 4, __pyx_nargs); __PYX_ERR(19, 260, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_78mkScatter(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_usefocus, __pyx_v_usestddev, __pyx_v_uflow_binwidth, __pyx_v_oflow_binwidth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_78mkScatter(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_usestddev, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth) {
  YODA::Scatter2D __pyx_v_s2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  double __pyx_t_4;
  double __pyx_t_5;
  YODA::Scatter2D __pyx_t_6;
  YODA::Scatter2D *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Profile1D.pyx":265
 *         mean bin y values and their standard errors (or std deviations if usestddev=True).
 *         The remaining optional parameters allow under- and overflow points to be created."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Profile1D(deref(self.p1ptr()), usefocus, usestddev, uflow_binwidth, oflow_binwidth)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 265, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_usefocus); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 265, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_usestddev); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(19, 265, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_uflow_binwidth); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 265, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_oflow_binwidth); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(19, 265, __pyx_L1_error)
  try {
    __pyx_t_6 = YODA::mkScatter((*__pyx_t_1), __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 265, __pyx_L1_error)
  }
  __pyx_v_s2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_6);

  /* "include/Profile1D.pyx":266
 *         The remaining optional parameters allow under- and overflow points to be created."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Profile1D(deref(self.p1ptr()), usefocus, usestddev, uflow_binwidth, oflow_binwidth)
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_7 = __pyx_v_s2.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 266, __pyx_L1_error)
  }
  __pyx_t_8 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":260
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Profile1D to a Scatter2D, with y representing
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Profile1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":269
 * 
 * 
 *     def divideBy(self, Profile1D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_81divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_80divideBy, "Profile1D.divideBy(self, Profile1D h)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_81divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_81divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_80divideBy};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_81divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_h = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_h)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 269, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divideBy") < 0)) __PYX_ERR(19, 269, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile1D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 269, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_h), __pyx_ptype_4yoda_4core_Profile1D, 1, "h", 0))) __PYX_ERR(19, 269, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_80divideBy(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_h);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_80divideBy(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_h) {
  YODA::Scatter2D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  YODA::Profile1D *__pyx_t_2;
  YODA::Scatter2D __pyx_t_3;
  YODA::Scatter2D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 0);

  /* "include/Profile1D.pyx":270
 * 
 *     def divideBy(self, Profile1D h):
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 270, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_h); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 270, __pyx_L1_error)
  try {
    __pyx_t_3 = divide((*__pyx_t_1), (*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 270, __pyx_L1_error)
  }
  __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

  /* "include/Profile1D.pyx":271
 *     def divideBy(self, Profile1D h):
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_4 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 271, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":269
 * 
 * 
 *     def divideBy(self, Profile1D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":274
 * 
 * 
 *     def __iadd__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_83__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_83__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 274, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_82__iadd__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_82__iadd__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  YODA::Profile1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/Profile1D.pyx":275
 * 
 *     def __iadd__(Profile1D self, Profile1D other):
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())             # <<<<<<<<<<<<<<
 *         return self
 *     def __isub__(Profile1D self, Profile1D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 275, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 275, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Profile1D.pyx":276
 *     def __iadd__(Profile1D self, Profile1D other):
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self             # <<<<<<<<<<<<<<
 *     def __isub__(Profile1D self, Profile1D other):
 *         c.Profile1D_isub_Profile1D(self.p1ptr(), other.p1ptr())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":274
 * 
 * 
 *     def __iadd__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":277
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 *     def __isub__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         c.Profile1D_isub_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_85__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_85__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 277, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_84__isub__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_84__isub__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile1D *__pyx_t_1;
  YODA::Profile1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/Profile1D.pyx":278
 *         return self
 *     def __isub__(Profile1D self, Profile1D other):
 *         c.Profile1D_isub_Profile1D(self.p1ptr(), other.p1ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 278, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 278, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Profile1D.pyx":279
 *     def __isub__(Profile1D self, Profile1D other):
 *         c.Profile1D_isub_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __add__(Profile1D self, Profile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":277
 *         c.Profile1D_iadd_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 *     def __isub__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         c.Profile1D_isub_Profile1D(self.p1ptr(), other.p1ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":281
 *         return self
 * 
 *     def __add__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_87__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_87__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 281, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_86__add__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_86__add__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Profile1D *__pyx_t_2;
  YODA::Profile1D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Profile1D.pyx":282
 * 
 *     def __add__(Profile1D self, Profile1D other):
 *         h = Profile1D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Profile1D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 282, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":283
 *     def __add__(Profile1D self, Profile1D other):
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))             # <<<<<<<<<<<<<<
 *         return h
 *     def __sub__(Profile1D self, Profile1D other):
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 283, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 283, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":284
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h             # <<<<<<<<<<<<<<
 *     def __sub__(Profile1D self, Profile1D other):
 *         h = Profile1D()
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":281
 *         return self
 * 
 *     def __add__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile1D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":285
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h
 *     def __sub__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_sub_Profile1D(self.p1ptr(), other.p1ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_89__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_89__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 285, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_88__sub__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_88__sub__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Profile1D *__pyx_t_2;
  YODA::Profile1D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Profile1D.pyx":286
 *         return h
 *     def __sub__(Profile1D self, Profile1D other):
 *         h = Profile1D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Profile1D_sub_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Profile1D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":287
 *     def __sub__(Profile1D self, Profile1D other):
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_sub_Profile1D(self.p1ptr(), other.p1ptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 287, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 287, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":288
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_sub_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     def __div__(Profile1D self, Profile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Profile1D.pyx":285
 *         cutil.set_owned_ptr(h, c.Profile1D_add_Profile1D(self.p1ptr(), other.p1ptr()))
 *         return h
 *     def __sub__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         h = Profile1D()
 *         cutil.set_owned_ptr(h, c.Profile1D_sub_Profile1D(self.p1ptr(), other.p1ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile1D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":290
 *         return h
 * 
 *     def __div__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_91__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_91__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 290, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_90__div__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_9Profile1D_90__div__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 0);

  /* "include/Profile1D.pyx":291
 * 
 *     def __div__(Profile1D self, Profile1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Profile1D self, Profile1D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":290
 *         return h
 * 
 *     def __div__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

/* "include/Profile1D.pyx":293
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_93__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_93__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile1D, 1, "other", 0))) __PYX_ERR(19, 293, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_92__truediv__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_92__truediv__(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 0);

  /* "include/Profile1D.pyx":294
 * 
 *     def __truediv__(Profile1D self, Profile1D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 294, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":293
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Profile1D self, Profile1D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":307
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_95_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_94_mknp, "Profile1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_95_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_95_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_94_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_95_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 307, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(19, 307, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(19, 307, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_94_mknp(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_94_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Profile1D.pyx":308
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Profile1D.pyx":309
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 309, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Profile1D.pyx":310
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 310, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 310, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Profile1D.pyx":308
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Profile1D.pyx":311
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Profile1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(19, 311, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Profile1D.pyx":312
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Profile1D.pyx":308
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Profile1D.pyx":307
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":317
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.p1ptr().xEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_97xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_96xEdges, "Profile1D.xEdges(self)\nAll x edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_97xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_96xEdges};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_97xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_96xEdges(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_96xEdges(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/Profile1D.pyx":319
 *     def xEdges(self):
 *         """All x edges of the histo."""
 *         return self._mknp(self.p1ptr().xEdges())             # <<<<<<<<<<<<<<
 * 
 *     def xWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 319, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 319, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 319, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":317
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.p1ptr().xEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile1D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":321
 *         return self._mknp(self.p1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p1ptr().xWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_99xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_98xWidths, "Profile1D.xWidths(self)\nAll x widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_99xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_98xWidths};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_99xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_98xWidths(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_98xWidths(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile1D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 0);

  /* "include/Profile1D.pyx":323
 *     def xWidths(self):
 *         """All x widths of the histo."""
 *         return self._mknp(self.p1ptr().xWidths())             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile1D_p1ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile1D *)NULL))) __PYX_ERR(19, 323, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(19, 323, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 323, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 323, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":321
 *         return self._mknp(self.p1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p1ptr().xWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile1D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":325
 *         return self._mknp(self.p1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_101xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_100xMins, "Profile1D.xMins(self)\nAll x low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_101xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_101xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_100xMins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_101xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_100xMins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_100xMins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Profile1D.pyx":327
 *     def xMins(self):
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 327, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 327, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 327, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 327, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 327, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 327, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 327, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 327, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 327, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":325
 *         return self._mknp(self.p1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":329
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_103xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_102xMaxs, "Profile1D.xMaxs(self)\nAll x high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_103xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_103xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_102xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_103xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_102xMaxs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_102xMaxs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Profile1D.pyx":331
 *     def xMaxs(self):
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xMids(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 331, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 331, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 331, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 331, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 331, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 331, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 331, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 331, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":329
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":333
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_105xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_104xMids, "Profile1D.xMids(self)\nAll x bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_105xMids = {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_105xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_104xMids};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_105xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMids (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMids", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMids", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_104xMids(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_104xMids(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMids", 0);

  /* "include/Profile1D.pyx":335
 *     def xMids(self):
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 335, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 335, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 335, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 335, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 335, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 335, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 335, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":333
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":340
 *     ## Filling properties in x
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_107xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_106xFoci, "Profile1D.xFoci(self)\nAll x bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_107xFoci = {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_107xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_106xFoci};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_107xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFoci (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFoci", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFoci", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_106xFoci(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_106xFoci(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFoci", 0);

  /* "include/Profile1D.pyx":342
 *     def xFoci(self):
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self, foci=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 342, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 342, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 342, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 342, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 342, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 342, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 342, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 342, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 342, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":340
 *     ## Filling properties in x
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":344
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_109xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_108xVals, "Profile1D.xVals(self, foci=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_109xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_109xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_108xVals};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_109xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 344, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVals") < 0)) __PYX_ERR(19, 344, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVals", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 344, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_108xVals(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_foci);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_108xVals(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_foci) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Profile1D.pyx":345
 * 
 *     def xVals(self, foci=False):
 *         return self.xFoci() if foci else self.xMids()             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self, foci=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 345, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":344
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":347
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_111xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_110xErrs, "Profile1D.xErrs(self, foci=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_111xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_111xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_110xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_111xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 347, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xErrs") < 0)) __PYX_ERR(19, 347, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xErrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 347, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_110xErrs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_foci);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_110xErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_foci) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Profile1D.pyx":348
 * 
 *     def xErrs(self, foci=False):
 *         if foci:             # <<<<<<<<<<<<<<
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(19, 348, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile1D.pyx":349
 *     def xErrs(self, foci=False):
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 349, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 349, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 349, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(19, 349, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(19, 349, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "include/Profile1D.pyx":348
 * 
 *     def xErrs(self, foci=False):
 *         if foci:             # <<<<<<<<<<<<<<
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  }

  /* "include/Profile1D.pyx":351
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 351, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 351, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 351, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 351, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(19, 351, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 351, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "include/Profile1D.pyx":347
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":353
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_113xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_112xMin, "Profile1D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_113xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_113xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_112xMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_113xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_112xMin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_112xMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Profile1D.pyx":355
 *     def xMin(self):
 *         """Lowest x value."""
 *         return min(self.xMins())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":353
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":357
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_115xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_114xMax, "Profile1D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_115xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_115xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_114xMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_115xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_114xMax(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_114xMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Profile1D.pyx":359
 *     def xMax(self):
 *         """Highest x value."""
 *         return max(self.xMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":357
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":362
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_117sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_116sumWs, "Profile1D.sumWs(self)\nAll sumW values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_117sumWs = {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_117sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_116sumWs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_117sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_116sumWs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_116sumWs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWs", 0);

  /* "include/Profile1D.pyx":364
 *     def sumWs(self):
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 364, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 364, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 364, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 364, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 364, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 364, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 364, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":365
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yMeans(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":362
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":367
 *         return rtn
 * 
 *     def yMeans(self):             # <<<<<<<<<<<<<<
 *         """All y heights y means."""
 *         return self._mknp([b.mean() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_119yMeans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_118yMeans, "Profile1D.yMeans(self)\nAll y heights y means.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_119yMeans = {"yMeans", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_119yMeans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_118yMeans};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_119yMeans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMeans (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMeans", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMeans", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_118yMeans(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_118yMeans(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMeans", 0);

  /* "include/Profile1D.pyx":369
 *     def yMeans(self):
 *         """All y heights y means."""
 *         return self._mknp([b.mean() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def yVals(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 369, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 369, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 369, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 369, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 369, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 369, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_mean); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 369, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 369, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":367
 *         return rtn
 * 
 *     def yMeans(self):             # <<<<<<<<<<<<<<
 *         """All y heights y means."""
 *         return self._mknp([b.mean() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.yMeans", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":371
 *         return self._mknp([b.mean() for b in self.bins()])
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self.yMeans()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_121yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_120yVals, "Profile1D.yVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_121yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_121yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_120yVals};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_121yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_120yVals(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_120yVals(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Profile1D.pyx":372
 * 
 *     def yVals(self):
 *         return self.yMeans()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMeans); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":371
 *         return self._mknp([b.mean() for b in self.bins()])
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self.yMeans()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":375
 * 
 * 
 *     def yStdErrs(self):             # <<<<<<<<<<<<<<
 *         """All standard errors on the y means."""
 *         return self._mknp([b.stdErr() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_123yStdErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_122yStdErrs, "Profile1D.yStdErrs(self)\nAll standard errors on the y means.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_123yStdErrs = {"yStdErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_123yStdErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_122yStdErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_123yStdErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_122yStdErrs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_122yStdErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErrs", 0);

  /* "include/Profile1D.pyx":377
 *     def yStdErrs(self):
 *         """All standard errors on the y means."""
 *         return self._mknp([b.stdErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def yStdDevs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 377, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 377, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 377, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 377, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 377, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 377, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_stdErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 377, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 377, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 377, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":375
 * 
 * 
 *     def yStdErrs(self):             # <<<<<<<<<<<<<<
 *         """All standard errors on the y means."""
 *         return self._mknp([b.stdErr() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.yStdErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":379
 *         return self._mknp([b.stdErr() for b in self.bins()])
 * 
 *     def yStdDevs(self):             # <<<<<<<<<<<<<<
 *         """All standard deviations of the y distributions."""
 *         return self._mknp([b.stdDev() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_125yStdDevs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_124yStdDevs, "Profile1D.yStdDevs(self)\nAll standard deviations of the y distributions.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_125yStdDevs = {"yStdDevs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_125yStdDevs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_124yStdDevs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_125yStdDevs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDevs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdDevs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdDevs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_124yStdDevs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_124yStdDevs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDevs", 0);

  /* "include/Profile1D.pyx":381
 *     def yStdDevs(self):
 *         """All standard deviations of the y distributions."""
 *         return self._mknp([b.stdDev() for b in self.bins()])             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 381, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 381, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 381, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(19, 381, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 381, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 381, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_stdDev); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(19, 381, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 381, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":379
 *         return self._mknp([b.stdErr() for b in self.bins()])
 * 
 *     def yStdDevs(self):             # <<<<<<<<<<<<<<
 *         """All standard deviations of the y distributions."""
 *         return self._mknp([b.stdDev() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile1D.yStdDevs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":383
 *         return self._mknp([b.stdDev() for b in self.bins()])
 * 
 *     def yErrs(self, sd=False):             # <<<<<<<<<<<<<<
 *         return self.yStdDevs() if sd else self.yStdErrs()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_127yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_126yErrs, "Profile1D.yErrs(self, sd=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_127yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_127yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_126yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_127yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 383, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yErrs") < 0)) __PYX_ERR(19, 383, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yErrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 383, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_126yErrs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_126yErrs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Profile1D.pyx":384
 * 
 *     def yErrs(self, sd=False):
 *         return self.yStdDevs() if sd else self.yStdErrs()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_sd); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(19, 384, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdDevs); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(19, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":383
 *         return self._mknp([b.stdDev() for b in self.bins()])
 * 
 *     def yErrs(self, sd=False):             # <<<<<<<<<<<<<<
 *         return self.yStdDevs() if sd else self.yStdErrs()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile1D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":387
 * 
 * 
 *     def yMins(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_129yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_128yMins, "Profile1D.yMins(self, sd=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_129yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_129yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_128yMins};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_129yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 387, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMins") < 0)) __PYX_ERR(19, 387, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMins", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 387, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_128yMins(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_128yMins(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_v_ys = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Profile1D.pyx":388
 * 
 *     def yMins(self, sd=False):
 *         ys = self.yVals()             # <<<<<<<<<<<<<<
 *         es = self.yErrs(sd)
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 388, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_ys = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":389
 *     def yMins(self, sd=False):
 *         ys = self.yVals()
 *         es = self.yErrs(sd)             # <<<<<<<<<<<<<<
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 389, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":390
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_ys);
  __Pyx_GIVEREF(__pyx_v_ys);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ys);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 390, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 390, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 390, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 390, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 390, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 390, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(19, 390, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 390, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(19, 390, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(19, 390, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Subtract(__pyx_v_y, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(19, 390, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":387
 * 
 * 
 *     def yMins(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile1D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ys);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":392
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_131yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_130yMaxs, "Profile1D.yMaxs(self, sd=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_131yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_131yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_130yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_131yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 392, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMaxs") < 0)) __PYX_ERR(19, 392, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMaxs", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 392, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_130yMaxs(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_130yMaxs(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_v_ys = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Profile1D.pyx":393
 * 
 *     def yMaxs(self, sd=False):
 *         ys = self.yVals()             # <<<<<<<<<<<<<<
 *         es = self.yErrs(sd)
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 393, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_ys = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":394
 *     def yMaxs(self, sd=False):
 *         ys = self.yVals()
 *         es = self.yErrs(sd)             # <<<<<<<<<<<<<<
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile1D.pyx":395
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(19, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_ys);
  __Pyx_GIVEREF(__pyx_v_ys);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ys);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(19, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(19, 395, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 395, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 395, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(19, 395, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 395, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(19, 395, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(19, 395, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(19, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(19, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(19, 395, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(19, 395, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(19, 395, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Add(__pyx_v_y, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(19, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(19, 395, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":392
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile1D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ys);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":397
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return min(self.yMins(sd))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_133yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_132yMin, "Profile1D.yMin(self, sd=False)\nLowest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_133yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_133yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_132yMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_133yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 397, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMin") < 0)) __PYX_ERR(19, 397, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMin", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 397, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_132yMin(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_132yMin(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Profile1D.pyx":399
 *     def yMin(self, sd=False):
 *         """Lowest y value."""
 *         return min(self.yMins(sd))             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 399, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":397
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return min(self.yMins(sd))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile1D.pyx":401
 *         return min(self.yMins(sd))
 * 
 *     def yMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs(sd))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_135yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_134yMax, "Profile1D.yMax(self, sd=False)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_135yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_135yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_134yMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_135yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(19, 401, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMax") < 0)) __PYX_ERR(19, 401, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMax", 0, 0, 1, __pyx_nargs); __PYX_ERR(19, 401, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_134yMax(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_134yMax(struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Profile1D.pyx":403
 *     def yMax(self, sd=False):
 *         """Highest y value."""
 *         return max(self.yMaxs(sd))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(19, 403, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile1D.pyx":401
 *         return min(self.yMins(sd))
 * 
 *     def yMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs(sd))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile1D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_137__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_136__reduce_cython__, "Profile1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_137__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_137__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_136__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_137__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_136__reduce_cython__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_136__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_139__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile1D_138__setstate_cython__, "Profile1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile1D_139__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_139__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_138__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Profile1D_139__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile1D_138__setstate_cython__(((struct __pyx_obj_4yoda_4core_Profile1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile1D_138__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":13
 *     """2D Bin class templated on a Dbn2D"""
 * 
 *     cdef inline c.Bin2D_Dbn2D* b2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("b2ptr", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":14
 * 
 *     cdef inline c.Bin2D_Dbn2D* b2ptr(self) except NULL:
 *         return <c.Bin2D_Dbn2D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn2D* _Bin2D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(20, 14, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":13
 *     """2D Bin class templated on a Dbn2D"""
 * 
 *     cdef inline c.Bin2D_Dbn2D* b2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.b2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":16
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn2D* _Bin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 * 
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_f_4yoda_4core_11Bin2D_Dbn2D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Bin2D", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":17
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn2D* _Bin2D(self) except NULL:
 *         return <c.Bin2D_Dbn2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(20, 17, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":16
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn2D* _Bin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D._Bin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":20
 * 
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn2D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 20, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(20, 20, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(20, 20, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(20, 20, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(20, 20, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
    __pyx_v_ylow = values[2];
    __pyx_v_yhigh = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(20, 20, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D___init__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_11Bin2D_Dbn2D___init__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  std::pair<double,double>  __pyx_t_4;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":21
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn2D( pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 21, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 21, __pyx_L1_error)
  try {
    __pyx_t_3 = std::pair<double,double> (__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(20, 21, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn2D.pyx":22
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn2D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 22, __pyx_L1_error)
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(20, 22, __pyx_L1_error)
  try {
    __pyx_t_4 = std::pair<double,double> (__pyx_t_2, __pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(20, 22, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn2D.pyx":21
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn2D( pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 */
  try {
    __pyx_t_5 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn2D(__pyx_t_3, __pyx_t_4);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(20, 21, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/Bin2D_Dbn2D.pyx":20
 * 
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn2D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":24
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_2__repr__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_2__repr__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":25
 * 
 *     def __repr__(self):
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMax); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_6);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_x_g_g_y_g_g, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(20, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":24
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_4xEdges, "Bin2D_Dbn2D.xEdges(self)\n\n        The lower and upper x edges.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_5xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_4xEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_4xEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_4xEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  std::pair<double,double>  __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":39
 *         The lower and upper x edges.
 *         """
 *         cdef pair[double, double] x = self.b2ptr().xEdges()             # <<<<<<<<<<<<<<
 *         return (x.first, x.second)
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 39, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 39, __pyx_L1_error)
  }
  __pyx_v_x = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/generated/Bin2D_Dbn2D.pyx":40
 *         """
 *         cdef pair[double, double] x = self.b2ptr().xEdges()
 *         return (x.first, x.second)             # <<<<<<<<<<<<<<
 * 
 *     def yEdges(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_x.first); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x.second); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_7yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_6yEdges, "Bin2D_Dbn2D.yEdges(self)\n\n        The lower and upper y edges.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_7yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_7yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_6yEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_7yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_6yEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_6yEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  std::pair<double,double>  __pyx_v_y;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":46
 *         The lower and upper y edges.
 *         """
 *         cdef pair[double, double] y = self.b2ptr().yEdges()             # <<<<<<<<<<<<<<
 *         return (y.first, y.second)
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 46, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 46, __pyx_L1_error)
  }
  __pyx_v_y = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/generated/Bin2D_Dbn2D.pyx":47
 *         """
 *         cdef pair[double, double] y = self.b2ptr().yEdges()
 *         return (y.first, y.second)             # <<<<<<<<<<<<<<
 * 
 *     def xyEdges(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_y.first); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_y.second); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_9xyEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_8xyEdges, "Bin2D_Dbn2D.xyEdges(self)\n\n        The lower and upper x,y edge pairs.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_9xyEdges = {"xyEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_9xyEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_8xyEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_9xyEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_8xyEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_8xyEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyEdges", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":53
 *         The lower and upper x,y edge pairs.
 *         """
 *         return util.XY(self.xEdges(), self.yEdges())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_11xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_10xMin, "Bin2D_Dbn2D.xMin(self)\nLow edge in x.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_11xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_11xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_10xMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_11xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_10xMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_10xMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":58
 *     def xMin(self):
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 58, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 58, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_13yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_12yMin, "Bin2D_Dbn2D.yMin(self)\nLow edge in y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_13yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_13yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_12yMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_13yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_12yMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_12yMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":62
 *     def yMin(self):
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def xyMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 62, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 62, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_15xyMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_14xyMin, "Bin2D_Dbn2D.xyMin(self)\nLow edges in x,y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_15xyMin = {"xyMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_15xyMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_14xyMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_15xyMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_14xyMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_14xyMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMin", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":66
 *     def xyMin(self):
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMin); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_17xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_16xMax, "Bin2D_Dbn2D.xMax(self)\nHigh edge in x.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_17xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_17xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_16xMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_17xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_16xMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_16xMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":71
 *     def xMax(self):
 *         """High edge in x."""
 *         return self.b2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 71, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_19yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_18yMax, "Bin2D_Dbn2D.yMax(self)\nHigh edge in y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_19yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_19yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_18yMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_19yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_18yMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_18yMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":75
 *     def yMax(self):
 *         """High edge in y."""
 *         return self.b2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def xyMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 75, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 75, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_21xyMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_20xyMax, "Bin2D_Dbn2D.xyMax(self)\nHigh edges in x,y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_21xyMax = {"xyMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_21xyMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_20xyMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_21xyMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_20xyMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_20xyMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMax", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":79
 *     def xyMax(self):
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMax); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_23xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_22xMid, "Bin2D_Dbn2D.xMid(self)\nGeometric centre of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_23xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_23xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_22xMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_23xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_22xMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_22xMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":84
 *     def xMid(self):
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()             # <<<<<<<<<<<<<<
 * 
 *     def yMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 84, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 84, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_25yMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_24yMid, "Bin2D_Dbn2D.yMid(self)\nGeometric centre of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_25yMid = {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_25yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_24yMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_25yMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_24yMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_24yMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMid", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":88
 *     def yMid(self):
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()             # <<<<<<<<<<<<<<
 * 
 *     def xyMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 88, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 88, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_27xyMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_26xyMid, "Bin2D_Dbn2D.xyMid(self)\nGeometric centre of the bin");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_27xyMid = {"xyMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_27xyMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_26xyMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_27xyMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_26xyMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_26xyMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMid", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":92
 *     def xyMid(self):
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMid); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_29xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_28xWidth, "Bin2D_Dbn2D.xWidth(self)\nWidth of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_29xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_29xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_28xWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_29xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_28xWidth(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_28xWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":97
 *     def xWidth(self):
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()             # <<<<<<<<<<<<<<
 * 
 *     def yWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 97, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 97, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_31yWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_30yWidth, "Bin2D_Dbn2D.yWidth(self)\nWidth of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_31yWidth = {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_31yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_30yWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_31yWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_30yWidth(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_30yWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidth", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":101
 *     def yWidth(self):
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()             # <<<<<<<<<<<<<<
 * 
 *     def xyWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 101, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 101, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_33xyWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_32xyWidths, "Bin2D_Dbn2D.xyWidths(self)\nThe widths of this bin in the x- and y-dimensions.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_33xyWidths = {"xyWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_33xyWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_32xyWidths};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_33xyWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_32xyWidths(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_32xyWidths(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyWidths", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":105
 *     def xyWidths(self):
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xWidth); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yWidth); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_35area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_34area, "Bin2D_Dbn2D.area(self)\nThe area of this bin in the x-y plane.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_35area = {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_35area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_34area};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_35area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("area (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("area", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "area", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_34area(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_34area(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("area", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":110
 *     def area(self):
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 110, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->area();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 110, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.area", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_37xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_36xFocus, "Bin2D_Dbn2D.xFocus(self)\nFocus of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_37xFocus = {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_37xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_36xFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_37xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_36xFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_36xFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFocus", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":115
 *     def xFocus(self):
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()             # <<<<<<<<<<<<<<
 * 
 *     def yFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 115, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 115, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_39yFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_38yFocus, "Bin2D_Dbn2D.yFocus(self)\nFocus of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_39yFocus = {"yFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_39yFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_38yFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_39yFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_38yFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_38yFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yFocus", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":119
 *     def yFocus(self):
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()             # <<<<<<<<<<<<<<
 * 
 *     def xyFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 119, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 119, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_41xyFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_40xyFocus, "Bin2D_Dbn2D.xyFocus(self)\nThe focus of the bin in the x- and y-dimensions");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_41xyFocus = {"xyFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_41xyFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_40xyFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_41xyFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_40xyFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_40xyFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyFocus", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":123
 *     def xyFocus(self):
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFocus); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_42xMean, "Bin2D_Dbn2D.xMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_43xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_42xMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_42xMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_42xMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":127
 * 
 *     def xMean(self):
 *         return self.b2ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def yMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 127, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 127, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_45yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_44yMean, "Bin2D_Dbn2D.yMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_45yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_45yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_44yMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_45yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_44yMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_44yMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":130
 * 
 *     def yMean(self):
 *         return self.b2ptr().yMean()             # <<<<<<<<<<<<<<
 * 
 *     def xyMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 130, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 130, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_47xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_46xyMean, "Bin2D_Dbn2D.xyMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_47xyMean = {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_47xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_46xyMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_47xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_46xyMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_46xyMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMean", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":133
 * 
 *     def xyMean(self):
 *         return util.XY(self.xMean(), self.yMean())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMean); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMean); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_49xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_48xVariance, "Bin2D_Dbn2D.xVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_49xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_49xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_48xVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_49xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_48xVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_48xVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":137
 * 
 *     def xVariance(self):
 *         return self.b2ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 137, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 137, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_51yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_50yVariance, "Bin2D_Dbn2D.yVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_51yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_51yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_50yVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_51yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_50yVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_50yVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":140
 * 
 *     def yVariance(self):
 *         return self.b2ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xyVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 140, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 140, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_53xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_52xyVariance, "Bin2D_Dbn2D.xyVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_53xyVariance = {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_53xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_52xyVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_53xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_52xyVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_52xyVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyVariance", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":143
 * 
 *     def xyVariance(self):
 *         return util.XY(self.xVariance(), self.yVariance())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xVariance); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVariance); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_55xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_54xStdDev, "Bin2D_Dbn2D.xStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_55xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_55xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_54xStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_55xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_54xStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_54xStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":147
 * 
 *     def xStdDev(self):
 *         return self.b2ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 147, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 147, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_57yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_56yStdDev, "Bin2D_Dbn2D.yStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_57yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_57yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_56yStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_57yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_56yStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_56yStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":150
 * 
 *     def yStdDev(self):
 *         return self.b2ptr().yStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xyStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 150, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 150, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev, "Bin2D_Dbn2D.xyStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev = {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdDev", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":153
 * 
 *     def xyStdDev(self):
 *         return util.XY(self.xStdDev(), self.yStdDev())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdDev); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdDev); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_61xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_60xStdErr, "Bin2D_Dbn2D.xStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_61xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_61xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_60xStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_61xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_60xStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_60xStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":157
 * 
 *     def xStdErr(self):
 *         return self.b2ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 157, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 157, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_63yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_62yStdErr, "Bin2D_Dbn2D.yStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_63yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_63yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_62yStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_63yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_62yStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_62yStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":160
 * 
 *     def yStdErr(self):
 *         return self.b2ptr().yStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xyStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 160, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 160, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr, "Bin2D_Dbn2D.xyStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr = {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdErr", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":163
 * 
 *     def xyStdErr(self):
 *         return util.XY(self.xStdErr(), self.yStdErr())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdErr); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_67xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_66xRMS, "Bin2D_Dbn2D.xRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_67xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_67xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_66xRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_67xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_66xRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_66xRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":167
 * 
 *     def xRMS(self):
 *         return self.b2ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 167, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 167, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_69yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_68yRMS, "Bin2D_Dbn2D.yRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_69yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_68yRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_69yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_68yRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_68yRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":170
 * 
 *     def yRMS(self):
 *         return self.b2ptr().yRMS()             # <<<<<<<<<<<<<<
 * 
 *     def xyRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 170, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 170, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_71xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_70xyRMS, "Bin2D_Dbn2D.xyRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_71xyRMS = {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_71xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_70xyRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_71xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_70xyRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_70xyRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyRMS", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":173
 * 
 *     def xyRMS(self):
 *         return util.XY(self.xRMS(), self.yRMS())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xRMS); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yRMS); if (unlikely(!__pyx_t_5)) __PYX_ERR(20, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(20, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_73sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_72sumWX, "Bin2D_Dbn2D.sumWX(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_73sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_73sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_72sumWX};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_73sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_72sumWX(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_72sumWX(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":180
 * 
 *     def sumWX(self):
 *         return self.b2ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 180, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 180, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_75sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_74sumWY, "Bin2D_Dbn2D.sumWY(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_75sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_75sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_74sumWY};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_75sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_74sumWY(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_74sumWY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":183
 * 
 *     def sumWY(self):
 *         return self.b2ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWXY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 183, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 183, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.sumWY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_77sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_76sumWXY, "Bin2D_Dbn2D.sumWXY(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_77sumWXY = {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_77sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_76sumWXY};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_77sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWXY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWXY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWXY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_76sumWXY(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_76sumWXY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWXY", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":186
 * 
 *     def sumWXY(self):
 *         return self.b2ptr().sumWXY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 186, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWXY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 186, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.sumWXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_79sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_78sumWX2, "Bin2D_Dbn2D.sumWX2(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_79sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_79sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_78sumWX2};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_79sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_78sumWX2(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_78sumWX2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":189
 * 
 *     def sumWX2(self):
 *         return self.b2ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 189, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 189, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_81sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_80sumWY2, "Bin2D_Dbn2D.sumWY2(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_81sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_81sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_80sumWY2};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_81sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_80sumWY2(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_80sumWY2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY2", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":192
 * 
 *     def sumWY2(self):
 *         return self.b2ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 192, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 192, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(20, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.sumWY2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo, "Bin2D_Dbn2D.adjacentTo(self, Bin2D_Dbn2D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo = {"adjacentTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("adjacentTo (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(20, 199, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "adjacentTo") < 0)) __PYX_ERR(20, 199, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("adjacentTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(20, 199, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.adjacentTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn2D, 1, "other", 0))) __PYX_ERR(20, 199, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("adjacentTo", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":200
 * 
 *     def adjacentTo(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 200, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 200, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->adjacentTo((*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 200, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.adjacentTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":203
 * 
 * 
 *     def __add__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_85__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_85__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn2D, 1, "other", 0))) __PYX_ERR(20, 203, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_84__add__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_84__add__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":204
 * 
 *     def __add__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) + deref(other.b2ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin2D_Dbn2D.pyx":206
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) + deref(other.b2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 206, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 206, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn2D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 206, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn2D.pyx":204
 * 
 *     def __add__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) + deref(other.b2ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":203
 * 
 * 
 *     def __add__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn2D.pyx":208
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) + deref(other.b2ptr())))
 * 
 *     def __sub__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_87__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_87__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn2D, 1, "other", 0))) __PYX_ERR(20, 208, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_86__sub__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_86__sub__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/generated/Bin2D_Dbn2D.pyx":209
 * 
 *     def __sub__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) - deref(other.b2ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin2D_Dbn2D.pyx":211
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) - deref(other.b2ptr())))             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 211, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *)NULL))) __PYX_ERR(20, 211, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn2D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(20, 211, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn2D.pyx":209
 * 
 *     def __sub__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn2D,
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) - deref(other.b2ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(20, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn2D.pyx":208
 *             new c.Bin2D_Dbn2D(deref(self.b2ptr()) + deref(other.b2ptr())))
 * 
 *     def __sub__(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn2D,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__, "Bin2D_Dbn2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__, "Bin2D_Dbn2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":13
 *     """2D Bin class templated on a Dbn3D"""
 * 
 *     cdef inline c.Bin2D_Dbn3D* b2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("b2ptr", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":14
 * 
 *     cdef inline c.Bin2D_Dbn3D* b2ptr(self) except NULL:
 *         return <c.Bin2D_Dbn3D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn3D* _Bin2D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(21, 14, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":13
 *     """2D Bin class templated on a Dbn3D"""
 * 
 *     cdef inline c.Bin2D_Dbn3D* b2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.b2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":16
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn3D* _Bin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 * 
 */

static CYTHON_INLINE __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_f_4yoda_4core_11Bin2D_Dbn3D__Bin2D(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Bin2D", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":17
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn3D* _Bin2D(self) except NULL:
 *         return <c.Bin2D_Dbn3D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(21, 17, __pyx_L1_error)
  __pyx_r = ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":16
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.Bin2D_Dbn3D* _Bin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Bin2D_Dbn3D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D._Bin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":20
 * 
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn3D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 20, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(21, 20, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(21, 20, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 20, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(21, 20, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(21, 20, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
    __pyx_v_ylow = values[2];
    __pyx_v_yhigh = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(21, 20, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D___init__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_11Bin2D_Dbn3D___init__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  std::pair<double,double>  __pyx_t_4;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":21
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn3D( pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 21, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 21, __pyx_L1_error)
  try {
    __pyx_t_3 = std::pair<double,double> (__pyx_t_1, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(21, 21, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn3D.pyx":22
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn3D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 22, __pyx_L1_error)
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(21, 22, __pyx_L1_error)
  try {
    __pyx_t_4 = std::pair<double,double> (__pyx_t_2, __pyx_t_1);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(21, 22, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn3D.pyx":21
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn3D( pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 */
  try {
    __pyx_t_5 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn3D(__pyx_t_3, __pyx_t_4);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(21, 21, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/generated/Bin2D_Dbn3D.pyx":20
 * 
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Bin2D_Dbn3D( pair[double, double](xlow, xhigh),
 *                                                       pair[double, double](ylow, yhigh) ))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":24
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_2__repr__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_2__repr__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":25
 * 
 *     def __repr__(self):
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMax); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 25, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_6);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_6 = 0;
  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_s_x_g_g_y_g_g, __pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(21, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":24
 *                                                       pair[double, double](ylow, yhigh) ))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<%s x=[%g, %g), y=[%g, %g)>' % (self.__class__.__name__, self.xMin(), self.xMax(), self.yMin(), self.yMax())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_4xEdges, "Bin2D_Dbn3D.xEdges(self)\n\n        The lower and upper x edges.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_5xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_4xEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_5xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_4xEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_4xEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  std::pair<double,double>  __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":39
 *         The lower and upper x edges.
 *         """
 *         cdef pair[double, double] x = self.b2ptr().xEdges()             # <<<<<<<<<<<<<<
 *         return (x.first, x.second)
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 39, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 39, __pyx_L1_error)
  }
  __pyx_v_x = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/generated/Bin2D_Dbn3D.pyx":40
 *         """
 *         cdef pair[double, double] x = self.b2ptr().xEdges()
 *         return (x.first, x.second)             # <<<<<<<<<<<<<<
 * 
 *     def yEdges(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_x.first); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x.second); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_7yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_6yEdges, "Bin2D_Dbn3D.yEdges(self)\n\n        The lower and upper y edges.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_7yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_7yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_6yEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_7yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_6yEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_6yEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  std::pair<double,double>  __pyx_v_y;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":46
 *         The lower and upper y edges.
 *         """
 *         cdef pair[double, double] y = self.b2ptr().yEdges()             # <<<<<<<<<<<<<<
 *         return (y.first, y.second)
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 46, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 46, __pyx_L1_error)
  }
  __pyx_v_y = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/generated/Bin2D_Dbn3D.pyx":47
 *         """
 *         cdef pair[double, double] y = self.b2ptr().yEdges()
 *         return (y.first, y.second)             # <<<<<<<<<<<<<<
 * 
 *     def xyEdges(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_y.first); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_y.second); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_9xyEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_8xyEdges, "Bin2D_Dbn3D.xyEdges(self)\n\n        The lower and upper x,y edge pairs.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_9xyEdges = {"xyEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_9xyEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_8xyEdges};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_9xyEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_8xyEdges(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_8xyEdges(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyEdges", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":53
 *         The lower and upper x,y edge pairs.
 *         """
 *         return util.XY(self.xEdges(), self.yEdges())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_11xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_10xMin, "Bin2D_Dbn3D.xMin(self)\nLow edge in x.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_11xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_11xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_10xMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_11xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_10xMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_10xMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":58
 *     def xMin(self):
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 58, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 58, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_13yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_12yMin, "Bin2D_Dbn3D.yMin(self)\nLow edge in y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_13yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_13yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_12yMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_13yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_12yMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_12yMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":62
 *     def yMin(self):
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def xyMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 62, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 62, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_15xyMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_14xyMin, "Bin2D_Dbn3D.xyMin(self)\nLow edges in x,y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_15xyMin = {"xyMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_15xyMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_14xyMin};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_15xyMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_14xyMin(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_14xyMin(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMin", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":66
 *     def xyMin(self):
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMin); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMin); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_17xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_16xMax, "Bin2D_Dbn3D.xMax(self)\nHigh edge in x.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_17xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_17xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_16xMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_17xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_16xMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_16xMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":71
 *     def xMax(self):
 *         """High edge in x."""
 *         return self.b2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 71, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 71, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_19yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_18yMax, "Bin2D_Dbn3D.yMax(self)\nHigh edge in y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_19yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_19yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_18yMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_19yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_18yMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_18yMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":75
 *     def yMax(self):
 *         """High edge in y."""
 *         return self.b2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def xyMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 75, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 75, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_21xyMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_20xyMax, "Bin2D_Dbn3D.xyMax(self)\nHigh edges in x,y.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_21xyMax = {"xyMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_21xyMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_20xyMax};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_21xyMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_20xyMax(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_20xyMax(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMax", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":79
 *     def xyMax(self):
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMax); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 79, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_23xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_22xMid, "Bin2D_Dbn3D.xMid(self)\nGeometric centre of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_23xMid = {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_23xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_22xMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_23xMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_22xMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_22xMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMid", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":84
 *     def xMid(self):
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()             # <<<<<<<<<<<<<<
 * 
 *     def yMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 84, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 84, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_25yMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_24yMid, "Bin2D_Dbn3D.yMid(self)\nGeometric centre of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_25yMid = {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_25yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_24yMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_25yMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_24yMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_24yMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMid", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":88
 *     def yMid(self):
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()             # <<<<<<<<<<<<<<
 * 
 *     def xyMid(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 88, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMid();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 88, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_27xyMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_26xyMid, "Bin2D_Dbn3D.xyMid(self)\nGeometric centre of the bin");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_27xyMid = {"xyMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_27xyMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_26xyMid};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_27xyMid(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMid (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMid", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMid", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_26xyMid(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_26xyMid(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMid", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":92
 *     def xyMid(self):
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMid); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyMid", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_29xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_28xWidth, "Bin2D_Dbn3D.xWidth(self)\nWidth of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_29xWidth = {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_29xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_28xWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_29xWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_28xWidth(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_28xWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidth", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":97
 *     def xWidth(self):
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()             # <<<<<<<<<<<<<<
 * 
 *     def yWidth(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 97, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 97, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_31yWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_30yWidth, "Bin2D_Dbn3D.yWidth(self)\nWidth of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_31yWidth = {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_31yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_30yWidth};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_31yWidth(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidth (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yWidth", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yWidth", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_30yWidth(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_30yWidth(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidth", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":101
 *     def yWidth(self):
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()             # <<<<<<<<<<<<<<
 * 
 *     def xyWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 101, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yWidth();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 101, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yWidth", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_33xyWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_32xyWidths, "Bin2D_Dbn3D.xyWidths(self)\nThe widths of this bin in the x- and y-dimensions.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_33xyWidths = {"xyWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_33xyWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_32xyWidths};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_33xyWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_32xyWidths(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_32xyWidths(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyWidths", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":105
 *     def xyWidths(self):
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xWidth); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yWidth); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_35area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_34area, "Bin2D_Dbn3D.area(self)\nThe area of this bin in the x-y plane.");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_35area = {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_35area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_34area};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_35area(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("area (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("area", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "area", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_34area(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_34area(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("area", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":110
 *     def area(self):
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 110, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->area();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 110, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.area", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_37xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_36xFocus, "Bin2D_Dbn3D.xFocus(self)\nFocus of the bin in x");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_37xFocus = {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_37xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_36xFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_37xFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_36xFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_36xFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFocus", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":115
 *     def xFocus(self):
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()             # <<<<<<<<<<<<<<
 * 
 *     def yFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 115, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 115, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_39yFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_38yFocus, "Bin2D_Dbn3D.yFocus(self)\nFocus of the bin in y");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_39yFocus = {"yFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_39yFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_38yFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_39yFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_38yFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_38yFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yFocus", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":119
 *     def yFocus(self):
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()             # <<<<<<<<<<<<<<
 * 
 *     def xyFocus(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 119, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yFocus();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 119, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_41xyFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_40xyFocus, "Bin2D_Dbn3D.xyFocus(self)\nThe focus of the bin in the x- and y-dimensions");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_41xyFocus = {"xyFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_41xyFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_40xyFocus};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_41xyFocus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyFocus (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyFocus", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyFocus", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_40xyFocus(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_40xyFocus(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyFocus", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":123
 *     def xyFocus(self):
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFocus); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyFocus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_42xMean, "Bin2D_Dbn3D.xMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_43xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_42xMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_43xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_42xMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_42xMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":127
 * 
 *     def xMean(self):
 *         return self.b2ptr().xMean()             # <<<<<<<<<<<<<<
 * 
 *     def yMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 127, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 127, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_45yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_44yMean, "Bin2D_Dbn3D.yMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_45yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_45yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_44yMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_45yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_44yMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_44yMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":130
 * 
 *     def yMean(self):
 *         return self.b2ptr().yMean()             # <<<<<<<<<<<<<<
 * 
 *     def xyMean(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 130, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 130, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_47xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_46xyMean, "Bin2D_Dbn3D.xyMean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_47xyMean = {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_47xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_46xyMean};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_47xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyMean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyMean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_46xyMean(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_46xyMean(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMean", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":133
 * 
 *     def xyMean(self):
 *         return util.XY(self.xMean(), self.yMean())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMean); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMean); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_49xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_48xVariance, "Bin2D_Dbn3D.xVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_49xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_49xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_48xVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_49xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_48xVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_48xVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":137
 * 
 *     def xVariance(self):
 *         return self.b2ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 137, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 137, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_51yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_50yVariance, "Bin2D_Dbn3D.yVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_51yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_51yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_50yVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_51yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_50yVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_50yVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":140
 * 
 *     def yVariance(self):
 *         return self.b2ptr().xVariance()             # <<<<<<<<<<<<<<
 * 
 *     def xyVariance(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 140, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xVariance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 140, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_53xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_52xyVariance, "Bin2D_Dbn3D.xyVariance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_53xyVariance = {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_53xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_52xyVariance};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_53xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyVariance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyVariance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyVariance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_52xyVariance(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_52xyVariance(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyVariance", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":143
 * 
 *     def xyVariance(self):
 *         return util.XY(self.xVariance(), self.yVariance())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xVariance); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVariance); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_55xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_54xStdDev, "Bin2D_Dbn3D.xStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_55xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_55xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_54xStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_55xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_54xStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_54xStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":147
 * 
 *     def xStdDev(self):
 *         return self.b2ptr().xStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 147, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 147, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_57yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_56yStdDev, "Bin2D_Dbn3D.yStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_57yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_57yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_56yStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_57yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_56yStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_56yStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":150
 * 
 *     def yStdDev(self):
 *         return self.b2ptr().yStdDev()             # <<<<<<<<<<<<<<
 * 
 *     def xyStdDev(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 150, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yStdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 150, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev, "Bin2D_Dbn3D.xyStdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev = {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyStdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyStdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdDev", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":153
 * 
 *     def xyStdDev(self):
 *         return util.XY(self.xStdDev(), self.yStdDev())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdDev); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdDev); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_61xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_60xStdErr, "Bin2D_Dbn3D.xStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_61xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_61xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_60xStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_61xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_60xStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_60xStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":157
 * 
 *     def xStdErr(self):
 *         return self.b2ptr().xStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 157, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 157, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_63yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_62yStdErr, "Bin2D_Dbn3D.yStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_63yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_63yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_62yStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_63yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_62yStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_62yStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":160
 * 
 *     def yStdErr(self):
 *         return self.b2ptr().yStdErr()             # <<<<<<<<<<<<<<
 * 
 *     def xyStdErr(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 160, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yStdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 160, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr, "Bin2D_Dbn3D.xyStdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr = {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyStdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyStdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdErr", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":163
 * 
 *     def xyStdErr(self):
 *         return util.XY(self.xStdErr(), self.yStdErr())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdErr); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 163, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_67xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_66xRMS, "Bin2D_Dbn3D.xRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_67xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_67xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_66xRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_67xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_66xRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_66xRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":167
 * 
 *     def xRMS(self):
 *         return self.b2ptr().xRMS()             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 167, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 167, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_69yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_68yRMS, "Bin2D_Dbn3D.yRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_69yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_68yRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_69yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_68yRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_68yRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":170
 * 
 *     def yRMS(self):
 *         return self.b2ptr().yRMS()             # <<<<<<<<<<<<<<
 * 
 *     def xyRMS(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 170, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yRMS();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 170, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_71xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_70xyRMS, "Bin2D_Dbn3D.xyRMS(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_71xyRMS = {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_71xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_70xyRMS};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_71xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyRMS (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xyRMS", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xyRMS", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_70xyRMS(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_70xyRMS(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyRMS", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":173
 * 
 *     def xyRMS(self):
 *         return util.XY(self.xRMS(), self.yRMS())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xRMS); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yRMS); if (unlikely(!__pyx_t_5)) __PYX_ERR(21, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(21, 173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_73sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_72sumWX, "Bin2D_Dbn3D.sumWX(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_73sumWX = {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_73sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_72sumWX};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_73sumWX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_72sumWX(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_72sumWX(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":180
 * 
 *     def sumWX(self):
 *         return self.b2ptr().sumWX()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 180, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 180, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.sumWX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_75sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_74sumWY, "Bin2D_Dbn3D.sumWY(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_75sumWY = {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_75sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_74sumWY};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_75sumWY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_74sumWY(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_74sumWY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":183
 * 
 *     def sumWY(self):
 *         return self.b2ptr().sumWY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWXY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 183, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 183, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.sumWY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_77sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_76sumWXY, "Bin2D_Dbn3D.sumWXY(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_77sumWXY = {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_77sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_76sumWXY};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_77sumWXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWXY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWXY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWXY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_76sumWXY(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_76sumWXY(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWXY", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":186
 * 
 *     def sumWXY(self):
 *         return self.b2ptr().sumWXY()             # <<<<<<<<<<<<<<
 * 
 *     def sumWX2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 186, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWXY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 186, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.sumWXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_79sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_78sumWX2, "Bin2D_Dbn3D.sumWX2(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_79sumWX2 = {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_79sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_78sumWX2};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_79sumWX2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWX2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWX2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWX2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_78sumWX2(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_78sumWX2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWX2", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":189
 * 
 *     def sumWX2(self):
 *         return self.b2ptr().sumWX2()             # <<<<<<<<<<<<<<
 * 
 *     def sumWY2(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 189, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWX2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 189, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.sumWX2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_81sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_80sumWY2, "Bin2D_Dbn3D.sumWY2(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_81sumWY2 = {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_81sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_80sumWY2};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_81sumWY2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWY2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWY2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWY2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_80sumWY2(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_80sumWY2(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWY2", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":192
 * 
 *     def sumWY2(self):
 *         return self.b2ptr().sumWY2()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 192, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWY2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 192, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(21, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.sumWY2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo, "Bin2D_Dbn3D.adjacentTo(self, Bin2D_Dbn3D other)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo = {"adjacentTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("adjacentTo (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_other,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_other)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(21, 199, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "adjacentTo") < 0)) __PYX_ERR(21, 199, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("adjacentTo", 1, 1, 1, __pyx_nargs); __PYX_ERR(21, 199, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.adjacentTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn3D, 1, "other", 0))) __PYX_ERR(21, 199, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self), __pyx_v_other);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("adjacentTo", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":200
 * 
 *     def adjacentTo(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 200, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 200, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->adjacentTo((*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 200, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.adjacentTo", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":203
 * 
 * 
 *     def __add__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_85__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_85__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn3D, 1, "other", 0))) __PYX_ERR(21, 203, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_84__add__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_84__add__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":204
 * 
 *     def __add__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) + deref(other.b2ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin2D_Dbn3D.pyx":206
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) + deref(other.b2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 206, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 206, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn3D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 206, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn3D.pyx":204
 * 
 *     def __add__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) + deref(other.b2ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":203
 * 
 * 
 *     def __add__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/generated/Bin2D_Dbn3D.pyx":208
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) + deref(other.b2ptr())))
 * 
 *     def __sub__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_87__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_87__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Bin2D_Dbn3D, 1, "other", 0))) __PYX_ERR(21, 208, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_86__sub__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_86__sub__(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_1;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_2;
  __pyx_t_4yoda_12declarations_Bin2D_Dbn3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/generated/Bin2D_Dbn3D.pyx":209
 * 
 *     def __sub__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) - deref(other.b2ptr())))
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/generated/Bin2D_Dbn3D.pyx":211
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) - deref(other.b2ptr())))             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 211, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *)NULL))) __PYX_ERR(21, 211, __pyx_L1_error)
  try {
    __pyx_t_3 = new __pyx_t_4yoda_12declarations_Bin2D_Dbn3D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(21, 211, __pyx_L1_error)
  }

  /* "include/generated/Bin2D_Dbn3D.pyx":209
 * 
 *     def __sub__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):
 *         return cutil.new_owned_cls(             # <<<<<<<<<<<<<<
 *             Bin2D_Dbn3D,
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) - deref(other.b2ptr())))
 */
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(21, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/generated/Bin2D_Dbn3D.pyx":208
 *             new c.Bin2D_Dbn3D(deref(self.b2ptr()) + deref(other.b2ptr())))
 * 
 *     def __sub__(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(
 *             Bin2D_Dbn3D,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__, "Bin2D_Dbn3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__, "Bin2D_Dbn3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__(((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Bin2D_Dbn3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":4
 * cdef class ProfileBin2D(Bin2D_Dbn3D):
 * 
 *     cdef inline c.ProfileBin2D* pb2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin2D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  YODA::ProfileBin2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pb2ptr", 0);

  /* "include/ProfileBin2D.pyx":5
 * 
 *     cdef inline c.ProfileBin2D* pb2ptr(self) except NULL:
 *         return <c.ProfileBin2D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.ProfileBin2D* _ProfileBin2D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(22, 5, __pyx_L1_error)
  __pyx_r = ((YODA::ProfileBin2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":4
 * cdef class ProfileBin2D(Bin2D_Dbn3D):
 * 
 *     cdef inline c.ProfileBin2D* pb2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin2D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.pb2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":7
 *         return <c.ProfileBin2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.ProfileBin2D* _ProfileBin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin2D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::ProfileBin2D *__pyx_f_4yoda_4core_12ProfileBin2D__ProfileBin2D(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  YODA::ProfileBin2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_ProfileBin2D", 0);

  /* "include/ProfileBin2D.pyx":8
 *     # TODO: remove
 *     cdef inline c.ProfileBin2D* _ProfileBin2D(self) except NULL:
 *         return <c.ProfileBin2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(22, 8, __pyx_L1_error)
  __pyx_r = ((YODA::ProfileBin2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":7
 *         return <c.ProfileBin2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.ProfileBin2D* _ProfileBin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.ProfileBin2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D._ProfileBin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":10
 *         return <c.ProfileBin2D*> self.ptr()
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.ProfileBin2D(xlow, xhigh, ylow, yhigh))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_12ProfileBin2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_12ProfileBin2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 10, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(22, 10, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(22, 10, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(22, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(22, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(22, 10, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
    __pyx_v_ylow = values[2];
    __pyx_v_yhigh = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(22, 10, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D___init__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_12ProfileBin2D___init__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  YODA::ProfileBin2D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/ProfileBin2D.pyx":11
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.ProfileBin2D(xlow, xhigh, ylow, yhigh))             # <<<<<<<<<<<<<<
 * 
 *     # def fill(self, x, y, z, weight=1.0, fraction=1.0):
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 11, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 11, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 11, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(22, 11, __pyx_L1_error)
  try {
    __pyx_t_5 = new YODA::ProfileBin2D(__pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 11, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(22, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/ProfileBin2D.pyx":10
 *         return <c.ProfileBin2D*> self.ptr()
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.ProfileBin2D(xlow, xhigh, ylow, yhigh))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":20
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().mean()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_3mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_2mean, "ProfileBin2D.mean(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_3mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_3mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_2mean};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_3mean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mean", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mean", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_2mean(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_2mean(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mean", 0);

  /* "include/ProfileBin2D.pyx":21
 *     #@property
 *     def mean(self):
 *         return self.pb2ptr().mean()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 21, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->mean();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 21, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":20
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().mean()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":24
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdDev()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_5stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_4stdDev, "ProfileBin2D.stdDev(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_5stdDev = {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_5stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_4stdDev};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_5stdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdDev (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdDev", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdDev", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_4stdDev(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_4stdDev(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdDev", 0);

  /* "include/ProfileBin2D.pyx":25
 *     #@property
 *     def stdDev(self):
 *         return self.pb2ptr().stdDev()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 25, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->stdDev();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 25, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":24
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdDev()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.stdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":28
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().variance()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_7variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_6variance, "ProfileBin2D.variance(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_7variance = {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_7variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_6variance};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_7variance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variance (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variance", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variance", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_6variance(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_6variance(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variance", 0);

  /* "include/ProfileBin2D.pyx":29
 *     #@property
 *     def variance(self):
 *         return self.pb2ptr().variance()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 29, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->variance();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 29, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":28
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().variance()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.variance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":32
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_9stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_8stdErr, "ProfileBin2D.stdErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_9stdErr = {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_9stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_8stdErr};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_9stdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("stdErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("stdErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "stdErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_8stdErr(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_8stdErr(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("stdErr", 0);

  /* "include/ProfileBin2D.pyx":33
 *     #@property
 *     def stdErr(self):
 *         return self.pb2ptr().stdErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 33, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->stdErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 33, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":32
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.stdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":36
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().rms()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_11rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_10rms, "ProfileBin2D.rms(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_11rms = {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_11rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_10rms};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_11rms(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rms (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rms", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rms", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_10rms(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_10rms(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rms", 0);

  /* "include/ProfileBin2D.pyx":37
 *     #@property
 *     def rms(self):
 *         return self.pb2ptr().rms()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 37, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->rms();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 37, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":36
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().rms()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.rms", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":40
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_13sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_12sumWZ, "ProfileBin2D.sumWZ(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_13sumWZ = {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_13sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_12sumWZ};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_13sumWZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWZ", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWZ", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_12sumWZ(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_12sumWZ(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWZ", 0);

  /* "include/ProfileBin2D.pyx":41
 *     #@property
 *     def sumWZ(self):
 *         return self.pb2ptr().sumWZ()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 41, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWZ();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 41, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":40
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.sumWZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":44
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ2()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_15sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_14sumWZ2, "ProfileBin2D.sumWZ2(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_15sumWZ2 = {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_15sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_14sumWZ2};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_15sumWZ2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWZ2 (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("sumWZ2", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "sumWZ2", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_14sumWZ2(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_14sumWZ2(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWZ2", 0);

  /* "include/ProfileBin2D.pyx":45
 *     #@property
 *     def sumWZ2(self):
 *         return self.pb2ptr().sumWZ2()             # <<<<<<<<<<<<<<
 * 
 *     def __add__(ProfileBin2D a, ProfileBin2D b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 45, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->sumWZ2();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 45, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":44
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ2()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.sumWZ2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":47
 *         return self.pb2ptr().sumWZ2()
 * 
 *     def __add__(ProfileBin2D a, ProfileBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) + deref(b.pb2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_17__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_17__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_ProfileBin2D, 1, "b", 0))) __PYX_ERR(22, 47, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_16__add__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_16__add__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  YODA::ProfileBin2D *__pyx_t_2;
  YODA::ProfileBin2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/ProfileBin2D.pyx":48
 * 
 *     def __add__(ProfileBin2D a, ProfileBin2D b):
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) + deref(b.pb2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(ProfileBin2D a, ProfileBin2D b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 48, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 48, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::ProfileBin2D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 48, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":47
 *         return self.pb2ptr().sumWZ2()
 * 
 *     def __add__(ProfileBin2D a, ProfileBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) + deref(b.pb2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":50
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) + deref(b.pb2ptr())))
 * 
 *     def __sub__(ProfileBin2D a, ProfileBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) - deref(b.pb2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_19__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_19__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_ProfileBin2D, 1, "b", 0))) __PYX_ERR(22, 50, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_18__sub__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_18__sub__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::ProfileBin2D *__pyx_t_1;
  YODA::ProfileBin2D *__pyx_t_2;
  YODA::ProfileBin2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/ProfileBin2D.pyx":51
 * 
 *     def __sub__(ProfileBin2D a, ProfileBin2D b):
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) - deref(b.pb2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 51, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::ProfileBin2D *)NULL))) __PYX_ERR(22, 51, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::ProfileBin2D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(22, 51, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(22, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":50
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) + deref(b.pb2ptr())))
 * 
 *     def __sub__(ProfileBin2D a, ProfileBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) - deref(b.pb2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/ProfileBin2D.pyx":53
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) - deref(b.pb2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         # TODO: Urk
 *         return 'ProfileBin2D(%g, %g, %g, %g)' % (self.edges.x + self.edges.y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_20__repr__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_20__repr__(struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/ProfileBin2D.pyx":55
 *     def __repr__(self):
 *         # TODO: Urk
 *         return 'ProfileBin2D(%g, %g, %g, %g)' % (self.edges.x + self.edges.y)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_edges); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_FormatSafe(__pyx_kp_s_ProfileBin2D_g_g_g_g, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(22, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/ProfileBin2D.pyx":53
 *         return cutil.new_owned_cls(ProfileBin2D, new c.ProfileBin2D(deref(a.pb2ptr()) - deref(b.pb2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         # TODO: Urk
 *         return 'ProfileBin2D(%g, %g, %g, %g)' % (self.edges.x + self.edges.y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_22__reduce_cython__, "ProfileBin2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_23__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_22__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_22__reduce_cython__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12ProfileBin2D_24__setstate_cython__, "ProfileBin2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_12ProfileBin2D_25__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_24__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_12ProfileBin2D_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_12ProfileBin2D_24__setstate_cython__(((struct __pyx_obj_4yoda_4core_ProfileBin2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12ProfileBin2D_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_ProfileBin2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.ProfileBin2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":4
 * cdef class HistoBin2D(Bin2D_Dbn2D):
 * 
 *     cdef inline c.HistoBin2D* hb2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin2D*> self.ptr()
 *     # TODO: remove
 */

static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  YODA::HistoBin2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hb2ptr", 0);

  /* "include/HistoBin2D.pyx":5
 * 
 *     cdef inline c.HistoBin2D* hb2ptr(self) except NULL:
 *         return <c.HistoBin2D*> self.ptr()             # <<<<<<<<<<<<<<
 *     # TODO: remove
 *     cdef inline c.HistoBin2D* _HistoBin2D(self) except NULL:
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(23, 5, __pyx_L1_error)
  __pyx_r = ((YODA::HistoBin2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":4
 * cdef class HistoBin2D(Bin2D_Dbn2D):
 * 
 *     cdef inline c.HistoBin2D* hb2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin2D*> self.ptr()
 *     # TODO: remove
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D.hb2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":7
 *         return <c.HistoBin2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.HistoBin2D* _HistoBin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin2D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::HistoBin2D *__pyx_f_4yoda_4core_10HistoBin2D__HistoBin2D(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  YODA::HistoBin2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_HistoBin2D", 0);

  /* "include/HistoBin2D.pyx":8
 *     # TODO: remove
 *     cdef inline c.HistoBin2D* _HistoBin2D(self) except NULL:
 *         return <c.HistoBin2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(23, 8, __pyx_L1_error)
  __pyx_r = ((YODA::HistoBin2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":7
 *         return <c.HistoBin2D*> self.ptr()
 *     # TODO: remove
 *     cdef inline c.HistoBin2D* _HistoBin2D(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.HistoBin2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D._HistoBin2D", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":10
 *         return <c.HistoBin2D*> self.ptr()
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.HistoBin2D(xlow, xhigh, ylow, yhigh))
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_10HistoBin2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_10HistoBin2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 10, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 1); __PYX_ERR(23, 10, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 2); __PYX_ERR(23, 10, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(23, 10, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, 3); __PYX_ERR(23, 10, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(23, 10, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
      values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
      values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
      values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
    __pyx_v_ylow = values[2];
    __pyx_v_yhigh = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(23, 10, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D___init__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_10HistoBin2D___init__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  YODA::HistoBin2D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/HistoBin2D.pyx":11
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):
 *         cutil.set_owned_ptr(self, new c.HistoBin2D(xlow, xhigh, ylow, yhigh))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 11, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 11, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 11, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(23, 11, __pyx_L1_error)
  try {
    __pyx_t_5 = new YODA::HistoBin2D(__pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 11, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/HistoBin2D.pyx":10
 *         return <c.HistoBin2D*> self.ptr()
 * 
 *     def __init__(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.HistoBin2D(xlow, xhigh, ylow, yhigh))
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":18
 * 
 *     #@property
 *     def volume(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volume()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_3volume(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_2volume, "HistoBin2D.volume(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_3volume = {"volume", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_3volume, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_2volume};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_3volume(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("volume (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("volume", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "volume", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_2volume(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_2volume(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("volume", 0);

  /* "include/HistoBin2D.pyx":19
 *     #@property
 *     def volume(self):
 *         return self.hb2ptr().volume()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 19, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->volume();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 19, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":18
 * 
 *     #@property
 *     def volume(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volume()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.volume", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":22
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().height()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_5height(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_4height, "HistoBin2D.height(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_5height = {"height", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_5height, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_4height};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_5height(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("height (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("height", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "height", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_4height(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_4height(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("height", 0);

  /* "include/HistoBin2D.pyx":23
 *     #@property
 *     def height(self):
 *         return self.hb2ptr().height()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 23, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->height();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 23, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":22
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().height()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.height", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":26
 * 
 *     #@property
 *     def volumeErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volumeErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_7volumeErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_6volumeErr, "HistoBin2D.volumeErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_7volumeErr = {"volumeErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_7volumeErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_6volumeErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_7volumeErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("volumeErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("volumeErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "volumeErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_6volumeErr(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_6volumeErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("volumeErr", 0);

  /* "include/HistoBin2D.pyx":27
 *     #@property
 *     def volumeErr(self):
 *         return self.hb2ptr().volumeErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 27, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->volumeErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 27, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":26
 * 
 *     #@property
 *     def volumeErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volumeErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.volumeErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":30
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().heightErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_9heightErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_8heightErr, "HistoBin2D.heightErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_9heightErr = {"heightErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_9heightErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_8heightErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_9heightErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heightErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("heightErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "heightErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_8heightErr(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_8heightErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heightErr", 0);

  /* "include/HistoBin2D.pyx":31
 *     #@property
 *     def heightErr(self):
 *         return self.hb2ptr().heightErr()             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 31, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->heightErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 31, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":30
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().heightErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.heightErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":34
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().relErr()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_11relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_10relErr, "HistoBin2D.relErr(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_11relErr = {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_11relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_10relErr};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_11relErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErr (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("relErr", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "relErr", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_10relErr(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_10relErr(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErr", 0);

  /* "include/HistoBin2D.pyx":35
 *     #@property
 *     def relErr(self):
 *         return self.hb2ptr().relErr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 35, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->relErr();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 35, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":34
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().relErr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.relErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":38
 * 
 * 
 *     def __add__(HistoBin2D a, HistoBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) + deref(b.hb2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_13__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_13__add__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_HistoBin2D, 1, "b", 0))) __PYX_ERR(23, 38, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_12__add__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_12__add__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  YODA::HistoBin2D *__pyx_t_2;
  YODA::HistoBin2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/HistoBin2D.pyx":39
 * 
 *     def __add__(HistoBin2D a, HistoBin2D b):
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) + deref(b.hb2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __sub__(HistoBin2D a, HistoBin2D b):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 39, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 39, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::HistoBin2D(((*__pyx_t_1) + (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 39, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":38
 * 
 * 
 *     def __add__(HistoBin2D a, HistoBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) + deref(b.hb2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":41
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) + deref(b.hb2ptr())))
 * 
 *     def __sub__(HistoBin2D a, HistoBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) - deref(b.hb2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_15__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_15__sub__(PyObject *__pyx_v_a, PyObject *__pyx_v_b) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_b), __pyx_ptype_4yoda_4core_HistoBin2D, 1, "b", 0))) __PYX_ERR(23, 41, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_14__sub__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_a), ((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_b));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_14__sub__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_a, struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_b) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::HistoBin2D *__pyx_t_1;
  YODA::HistoBin2D *__pyx_t_2;
  YODA::HistoBin2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/HistoBin2D.pyx":42
 * 
 *     def __sub__(HistoBin2D a, HistoBin2D b):
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) - deref(b.hb2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_a); if (unlikely(__pyx_t_1 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 42, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(__pyx_v_b); if (unlikely(__pyx_t_2 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(23, 42, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::HistoBin2D(((*__pyx_t_1) - (*__pyx_t_2)));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(23, 42, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(23, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":41
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) + deref(b.hb2ptr())))
 * 
 *     def __sub__(HistoBin2D a, HistoBin2D b):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) - deref(b.hb2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/HistoBin2D.pyx":44
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) - deref(b.hb2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'HistoBin2D(%g, %g; %g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1],
 *                                                         self.yEdges()[0], self.yEdges()[1], self.sumW())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_17__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_17__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_16__repr__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_16__repr__(struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/HistoBin2D.pyx":45
 * 
 *     def __repr__(self):
 *         return 'HistoBin2D(%g, %g; %g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1],             # <<<<<<<<<<<<<<
 *                                                         self.yEdges()[0], self.yEdges()[1], self.sumW())
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 45, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/HistoBin2D.pyx":46
 *     def __repr__(self):
 *         return 'HistoBin2D(%g, %g; %g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1],
 *                                                         self.yEdges()[0], self.yEdges()[1], self.sumW())             # <<<<<<<<<<<<<<
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_7, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_7)) __PYX_ERR(23, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_7, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  }

  /* "include/HistoBin2D.pyx":45
 * 
 *     def __repr__(self):
 *         return 'HistoBin2D(%g, %g; %g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1],             # <<<<<<<<<<<<<<
 *                                                         self.yEdges()[0], self.yEdges()[1], self.sumW())
 */
  __pyx_t_7 = PyTuple_New(5); if (unlikely(!__pyx_t_7)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_6);
  PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_7, 4, __pyx_t_1);
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_t_6 = 0;
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(23, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/HistoBin2D.pyx":44
 *         return cutil.new_owned_cls(HistoBin2D, new c.HistoBin2D(deref(a.hb2ptr()) - deref(b.hb2ptr())))
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return 'HistoBin2D(%g, %g; %g, %g; sumw=%g)' % (self.xEdges()[0], self.xEdges()[1],
 *                                                         self.yEdges()[0], self.yEdges()[1], self.sumW())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_19__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_18__reduce_cython__, "HistoBin2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_19__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_18__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_19__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_18__reduce_cython__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_18__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_21__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10HistoBin2D_20__setstate_cython__, "HistoBin2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_10HistoBin2D_21__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_20__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_10HistoBin2D_21__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10HistoBin2D_20__setstate_cython__(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10HistoBin2D_20__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_HistoBin2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.HistoBin2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":29
 *     """
 * 
 *     cdef inline c.Histo2D* h2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Histo2D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Histo2D *__pyx_f_4yoda_4core_7Histo2D_h2ptr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  YODA::Histo2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("h2ptr", 0);

  /* "include/Histo2D.pyx":30
 * 
 *     cdef inline c.Histo2D* h2ptr(self) except NULL:
 *         return <c.Histo2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(3, 30, __pyx_L1_error)
  __pyx_r = ((YODA::Histo2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":29
 *     """
 * 
 *     cdef inline c.Histo2D* h2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Histo2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.h2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":33
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Histo2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Histo2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D___init__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Histo2D___init__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Histo2D.pyx":34
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init2(Histo2D self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo2D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo2D__init4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Histo2D__init8); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Histo2D.pyx":33
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":36
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Histo2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_3_Histo2D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_2__init2, "Histo2D.__init2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_3_Histo2D__init2 = {"_Histo2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_3_Histo2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_2__init2};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_3_Histo2D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo2D__init2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 36, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 36, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo2D__init2") < 0)) __PYX_ERR(3, 36, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo2D__init2", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 36, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_2__init2(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_2__init2(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Histo2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo2D__init2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo2D.pyx":37
 * 
 *     def __init2(Histo2D self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Histo2D.pyx":38
 *     def __init2(Histo2D self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Histo2D.pyx":39
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 39, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 39, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Histo2D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 39, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Histo2D.pyx":36
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Histo2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_5_Histo2D__init4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_4__init4, "Histo2D.__init4(self, xedges, yedges, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_5_Histo2D__init4 = {"_Histo2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_5_Histo2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_4__init4};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_5_Histo2D__init4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xedges = 0;
  PyObject *__pyx_v_yedges = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo2D__init4 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xedges,&__pyx_n_s_yedges,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    values[3] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xedges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 41, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yedges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 41, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init4", 0, 2, 4, 1); __PYX_ERR(3, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 41, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 41, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo2D__init4") < 0)) __PYX_ERR(3, 41, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_xedges = values[0];
    __pyx_v_yedges = values[1];
    __pyx_v_path = values[2];
    __pyx_v_title = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo2D__init4", 0, 2, 4, __pyx_nargs); __PYX_ERR(3, 41, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_4__init4(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_xedges, __pyx_v_yedges, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_4__init4(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xedges, PyObject *__pyx_v_yedges, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<double>  __pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  YODA::Histo2D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo2D__init4", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo2D.pyx":42
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         # TODO: Do some type-checking and allow iterables of HistoBin2D as well?
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Histo2D.pyx":43
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         # TODO: Do some type-checking and allow iterables of HistoBin2D as well?
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Histo2D.pyx":45
 *         title = title
 *         # TODO: Do some type-checking and allow iterables of HistoBin2D as well?
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_xedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 45, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_yedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 45, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 45, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 45, __pyx_L1_error)
  try {
    __pyx_t_5 = new YODA::Histo2D(__pyx_t_1, __pyx_t_2, ((std::string)__pyx_t_3), ((std::string)__pyx_t_4));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 45, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/Histo2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":47
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_7_Histo2D__init8(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_6__init8, "Histo2D.__init8(self, nxbins, xlow, xhigh, nybins, ylow, yhigh, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_7_Histo2D__init8 = {"_Histo2D__init8", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_7_Histo2D__init8, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_6__init8};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_7_Histo2D__init8(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nxbins = 0;
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_nybins = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Histo2D__init8 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nxbins,&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_nybins,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    values[6] = ((PyObject *)__pyx_kp_s__2);
    values[7] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nxbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, 1); __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, 2); __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nybins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, 3); __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, 4); __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, 5); __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[6] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[7] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 47, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Histo2D__init8") < 0)) __PYX_ERR(3, 47, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nxbins = values[0];
    __pyx_v_xlow = values[1];
    __pyx_v_xhigh = values[2];
    __pyx_v_nybins = values[3];
    __pyx_v_ylow = values[4];
    __pyx_v_yhigh = values[5];
    __pyx_v_path = values[6];
    __pyx_v_title = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Histo2D__init8", 0, 6, 8, __pyx_nargs); __PYX_ERR(3, 47, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init8", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_6__init8(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_nxbins, __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_nybins, __pyx_v_ylow, __pyx_v_yhigh, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_6__init8(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_nxbins, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_nybins, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::Histo2D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Histo2D__init8", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Histo2D.pyx":48
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Histo2D.pyx":49
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Histo2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Histo2D.pyx":50
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Histo2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_nxbins); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_nybins); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 50, __pyx_L1_error)
  try {
    __pyx_t_9 = new YODA::Histo2D(__pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((std::string)__pyx_t_7), ((std::string)__pyx_t_8));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 50, __pyx_L1_error)
  }
  __pyx_t_10 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "include/Histo2D.pyx":47
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D._Histo2D__init8", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":53
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.numBins()
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_7Histo2D_9__len__(PyObject *__pyx_v_self); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_8__len__, "Number of bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_7Histo2D_8__len__;
#endif
static Py_ssize_t __pyx_pw_4yoda_4core_7Histo2D_9__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_8__len__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_7Histo2D_8__len__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Histo2D.pyx":55
 *     def __len__(self):
 *         "Number of bins"
 *         return self.numBins()             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 55, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":53
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         "Number of bins"
 *         return self.numBins()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":57
 *         return self.numBins()
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_10__getitem__, "Direct access to bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_7Histo2D_10__getitem__;
#endif
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_10__getitem__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_10__getitem__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Histo2D *__pyx_t_8;
  __Pyx_FakeReference<YODA::HistoBin2D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Histo2D.pyx":59
 *     def __getitem__(self, py_ix):
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bins().at(i), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 59, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(3, 59, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/Histo2D.pyx":60
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bins().at(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 60, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->bins().at(__pyx_v_i);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(3, 60, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":57
 *         return self.numBins()
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Histo2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":63
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_12__repr__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_12__repr__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Histo2D.pyx":64
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 64, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_bins_sumw_2g, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":63
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Histo2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":67
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_14reset, "Histo2D.reset(self)\nNone -> None.\n        Reset the histogram but leave the bin structure.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_15reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_14reset};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_14reset(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_14reset(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Histo2D.pyx":70
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 *         self.h2ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 70, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 70, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":67
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":72
 *         self.h2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo2D.
 *         Clone this Profile2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_16clone, "Histo2D.clone(self)\nNone -> Histo2D.\n        Clone this Profile2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_16clone};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_16clone(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_16clone(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  YODA::Histo2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Histo2D.pyx":75
 *         """None -> Histo2D.
 *         Clone this Profile2D."""
 *         return cutil.new_owned_cls(Histo2D, self.h2ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 75, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 75, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Histo2D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":72
 *         self.h2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo2D.
 *         Clone this Profile2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":78
 * 
 * 
 *     def fill(self, double x, double y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x,y values and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_18fill, "Histo2D.fill(self, double x, double y, weight=1.0, fraction=1.0)\n(x,y,[w]) -> None.\n        Fill with given x,y values and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_19fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_18fill};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_x;
  double __pyx_v_y;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_float_1_0);
    values[3] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, 1); __PYX_ERR(3, 78, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(3, 78, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_x == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
    __pyx_v_y = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_y == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 78, __pyx_L3_error)
    __pyx_v_weight = values[2];
    __pyx_v_fraction = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 2, 4, __pyx_nargs); __PYX_ERR(3, 78, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_18fill(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_18fill(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Histo2D.pyx":81
 *         """(x,y,[w]) -> None.
 *         Fill with given x,y values and optional weight."""
 *         self.h2ptr().fill(x, y, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def fillBin(self, size_t i, weight=1.0, fraction=1.0):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 81, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 81, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 81, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_v_x, __pyx_v_y, __pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 81, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":78
 * 
 * 
 *     def fill(self, double x, double y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x,y values and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":83
 *         self.h2ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t i, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,[w]) -> None.
 *         Fill bin i and optional weight."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_20fillBin, "Histo2D.fillBin(self, size_t i, weight=1.0, fraction=1.0)\n(i,[w]) -> None.\n        Fill bin i and optional weight.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_21fillBin = {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_20fillBin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_i;
  PyObject *__pyx_v_weight = 0;
  PyObject *__pyx_v_fraction = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 83, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 83, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fillBin") < 0)) __PYX_ERR(3, 83, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 83, __pyx_L3_error)
    __pyx_v_weight = values[1];
    __pyx_v_fraction = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fillBin", 0, 1, 3, __pyx_nargs); __PYX_ERR(3, 83, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_20fillBin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_i, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_20fillBin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, size_t __pyx_v_i, PyObject *__pyx_v_weight, PyObject *__pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillBin", 0);

  /* "include/Histo2D.pyx":86
 *         """(i,[w]) -> None.
 *         Fill bin i and optional weight."""
 *         self.h2ptr().fillBin(i, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 86, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_weight); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 86, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_fraction); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 86, __pyx_L1_error)
  try {
    __pyx_t_1->fillBin(__pyx_v_i, __pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 86, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":83
 *         self.h2ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t i, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,[w]) -> None.
 *         Fill bin i and optional weight."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":90
 * 
 *     #@property
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_22totalDbn, "Histo2D.totalDbn(self)\n() -> Dbn2D\n        The Dbn2D representing the total distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_23totalDbn = {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_22totalDbn};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalDbn (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("totalDbn", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "totalDbn", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_22totalDbn(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_22totalDbn(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("totalDbn", 0);

  /* "include/Histo2D.pyx":93
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 *         return cutil.new_borrowed_cls(Dbn2D, &self.h2ptr().totalDbn(), self)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: reinstate
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 93, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D), (&__pyx_t_1->totalDbn()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":90
 * 
 *     #@property
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Histo2D.totalDbn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":102
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_25integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_24integral, "Histo2D.integral(self, includeoverflows=True)\n([bool]) -> float\n        Histogram integral, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_25integral = {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_25integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_24integral};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_25integral(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("integral (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 102, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "integral") < 0)) __PYX_ERR(3, 102, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("integral", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 102, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_24integral(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_24integral(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("integral", 0);

  /* "include/Histo2D.pyx":105
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 *         return self.h2ptr().integral(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 105, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 105, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->integral(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":102
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.integral", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":108
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_27numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_26numEntries, "Histo2D.numEntries(self, includeoverflows=True)\n([bool]) -> float\n        Number of times this histogram was filled, optionally excluding overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_27numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_27numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_26numEntries};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_27numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 108, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "numEntries") < 0)) __PYX_ERR(3, 108, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 108, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_26numEntries(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_26numEntries(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Histo2D.pyx":111
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding overflows."""
 *         return self.h2ptr().numEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 111, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 111, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_1->numEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":108
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":113
 *         return self.h2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_29effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_28effNumEntries, "Histo2D.effNumEntries(self, includeoverflows=True)\n([bool]) -> float\n        Effective number of times this histogram was filled, computed from weights and optionally excluding overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_29effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_29effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_28effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_29effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 113, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "effNumEntries") < 0)) __PYX_ERR(3, 113, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 113, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_28effNumEntries(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_28effNumEntries(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Histo2D.pyx":116
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding overflows."""
 *         return self.h2ptr().effNumEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 116, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 116, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->effNumEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":113
 *         return self.h2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":118
 *         return self.h2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_31sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_30sumW, "Histo2D.sumW(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_31sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_31sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_30sumW};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_31sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW") < 0)) __PYX_ERR(3, 118, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 118, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_30sumW(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_30sumW(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Histo2D.pyx":121
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 *         return self.h2ptr().sumW(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 121, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 121, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":118
 *         return self.h2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":123
 *         return self.h2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_33sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_32sumW2, "Histo2D.sumW2(self, includeoverflows=True)\n([bool]) -> float\n        Sum of squared weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_33sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_33sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_32sumW2};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_33sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 123, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW2") < 0)) __PYX_ERR(3, 123, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_32sumW2(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_32sumW2(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Histo2D.pyx":126
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 *         return self.h2ptr().sumW2(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 126, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 126, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW2(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":123
 *         return self.h2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":129
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_35xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_34xMean, "Histo2D.xMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_35xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_35xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_34xMean};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_35xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 129, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMean") < 0)) __PYX_ERR(3, 129, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 129, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_34xMean(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_34xMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/Histo2D.pyx":132
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().xMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yMean(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 132, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 132, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":129
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":134
 *         return self.h2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_37yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_36yMean, "Histo2D.yMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_37yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_37yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_36yMean};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_37yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 134, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMean") < 0)) __PYX_ERR(3, 134, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 134, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_36yMean(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_36yMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 0);

  /* "include/Histo2D.pyx":137
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().yMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyMean(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 137, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 137, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":134
 *         return self.h2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":139
 *         return self.h2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_39xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_38xyMean, "Histo2D.xyMean(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Mean (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_39xyMean = {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_39xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_38xyMean};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_39xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 139, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyMean") < 0)) __PYX_ERR(3, 139, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 139, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_38xyMean(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_38xyMean(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMean", 0);

  /* "include/Histo2D.pyx":142
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xMean(includeoverflows), self.yMean(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMean); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMean); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 142, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":139
 *         return self.h2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":145
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_41xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_40xVariance, "Histo2D.xVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_41xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_41xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_40xVariance};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_41xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 145, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVariance") < 0)) __PYX_ERR(3, 145, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 145, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_40xVariance(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_40xVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/Histo2D.pyx":148
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().xVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 148, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 148, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":145
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":150
 *         return self.h2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_43yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_42yVariance, "Histo2D.yVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_43yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_43yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_42yVariance};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_43yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 150, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yVariance") < 0)) __PYX_ERR(3, 150, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 150, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_42yVariance(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_42yVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 0);

  /* "include/Histo2D.pyx":153
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().yVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 153, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 153, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":150
 *         return self.h2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":155
 *         return self.h2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_45xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_44xyVariance, "Histo2D.xyVariance(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Variances in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_45xyVariance = {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_45xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_44xyVariance};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_45xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 155, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyVariance") < 0)) __PYX_ERR(3, 155, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 155, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_44xyVariance(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_44xyVariance(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyVariance", 0);

  /* "include/Histo2D.pyx":158
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xVariance(includeoverflows), self.yVariance(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xVariance); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVariance); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":155
 *         return self.h2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":161
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_47xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_46xStdDev, "Histo2D.xStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_47xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_47xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_46xStdDev};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_47xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 161, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdDev") < 0)) __PYX_ERR(3, 161, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 161, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_46xStdDev(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_46xStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/Histo2D.pyx":164
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().xStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 164, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 164, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":161
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":166
 *         return self.h2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_49yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_48yStdDev, "Histo2D.yStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_49yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_49yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_48yStdDev};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_49yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 166, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yStdDev") < 0)) __PYX_ERR(3, 166, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 166, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_48yStdDev(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_48yStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 0);

  /* "include/Histo2D.pyx":169
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().yStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 169, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 169, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":166
 *         return self.h2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":171
 *         return self.h2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_51xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_50xyStdDev, "Histo2D.xyStdDev(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Standard deviations in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_51xyStdDev = {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_51xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_50xyStdDev};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_51xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 171, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyStdDev") < 0)) __PYX_ERR(3, 171, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 171, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_50xyStdDev(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_50xyStdDev(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdDev", 0);

  /* "include/Histo2D.pyx":174
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xStdDev(includeoverflows), self.yStdDev(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdDev); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdDev); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 174, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":171
 *         return self.h2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":177
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_53xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_52xStdErr, "Histo2D.xStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_53xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_53xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_52xStdErr};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_53xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 177, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdErr") < 0)) __PYX_ERR(3, 177, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 177, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_52xStdErr(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_52xStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/Histo2D.pyx":180
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().xStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 180, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 180, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":177
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":182
 *         return self.h2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_55yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_54yStdErr, "Histo2D.yStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_55yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_55yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_54yStdErr};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_55yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 182, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yStdErr") < 0)) __PYX_ERR(3, 182, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 182, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_54yStdErr(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_54yStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 0);

  /* "include/Histo2D.pyx":185
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().yStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 185, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 185, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":182
 *         return self.h2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":187
 *         return self.h2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_57xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_56xyStdErr, "Histo2D.xyStdErr(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_57xyStdErr = {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_57xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_56xyStdErr};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_57xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 187, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyStdErr") < 0)) __PYX_ERR(3, 187, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 187, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_56xyStdErr(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_56xyStdErr(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdErr", 0);

  /* "include/Histo2D.pyx":190
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xStdErr(includeoverflows), self.yStdErr(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdErr); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":187
 *         return self.h2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":193
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_59xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_58xRMS, "Histo2D.xRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_59xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_59xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_58xRMS};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_59xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 193, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xRMS") < 0)) __PYX_ERR(3, 193, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 193, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_58xRMS(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_58xRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/Histo2D.pyx":196
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().xRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 196, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 196, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":193
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":198
 *         return self.h2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_61yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_60yRMS, "Histo2D.yRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_61yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_61yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_60yRMS};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_61yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 198, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yRMS") < 0)) __PYX_ERR(3, 198, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 198, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_60yRMS(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_60yRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 0);

  /* "include/Histo2D.pyx":201
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 *         return self.h2ptr().yRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 201, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 201, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":198
 *         return self.h2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":203
 *         return self.h2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_63xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_62xyRMS, "Histo2D.xyRMS(self, includeoverflows=True)\n([bool]) -> (float,float)\n        RMS in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_63xyRMS = {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_63xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_62xyRMS};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_63xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 203, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyRMS") < 0)) __PYX_ERR(3, 203, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 203, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_62xyRMS(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_62xyRMS(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyRMS", 0);

  /* "include/Histo2D.pyx":206
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xRMS(includeoverflows), self.yRMS(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xRMS); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yRMS); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":203
 *         return self.h2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":209
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_65scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_64scaleW, "Histo2D.scaleW(self, w)\n(float) -> None.\n        Rescale the weights in this histogram by the factor w.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_65scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_65scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_64scaleW};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_65scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 209, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(3, 209, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 209, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_64scaleW(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_64scaleW(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Histo2D.pyx":212
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 *         self.h2ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def normalize(self, double normto=1.0, bint includeoverflows=True):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 212, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 212, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 212, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":209
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":214
 *         self.h2ptr().scaleW(w)
 * 
 *     def normalize(self, double normto=1.0, bint includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """(float, bool) -> None.
 *         Normalize the histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_67normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_66normalize, "Histo2D.normalize(self, double normto=1.0, bool includeoverflows=True)\n(float, bool) -> None.\n        Normalize the histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_67normalize = {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_67normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_66normalize};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_67normalize(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_normto;
  int __pyx_v_includeoverflows;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("normalize (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_normto,&__pyx_n_s_includeoverflows,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_normto);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 214, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 214, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "normalize") < 0)) __PYX_ERR(3, 214, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    if (values[0]) {
      __pyx_v_normto = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_normto == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 214, __pyx_L3_error)
    } else {
      __pyx_v_normto = ((double)1.0);
    }
    if (values[1]) {
      __pyx_v_includeoverflows = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_includeoverflows == (int)-1) && PyErr_Occurred())) __PYX_ERR(3, 214, __pyx_L3_error)
    } else {
      __pyx_v_includeoverflows = ((int)1);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("normalize", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 214, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_66normalize(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_normto, __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_66normalize(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, double __pyx_v_normto, int __pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("normalize", 0);

  /* "include/Histo2D.pyx":217
 *         """(float, bool) -> None.
 *         Normalize the histogram."""
 *         self.h2ptr().normalize(normto, includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 217, __pyx_L1_error)
  try {
    __pyx_t_1->normalize(__pyx_v_normto, __pyx_v_includeoverflows);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 217, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":214
 *         self.h2ptr().scaleW(w)
 * 
 *     def normalize(self, double normto=1.0, bint includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """(float, bool) -> None.
 *         Normalize the histogram."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.normalize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":220
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_69xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_68xMin, "Histo2D.xMin(self)\nLow x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_69xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_69xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_68xMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_69xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_68xMin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_68xMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Histo2D.pyx":222
 *     def xMin(self):
 *         """Low x edge of the histo."""
 *         return self.h2ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 222, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 222, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":220
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h2ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":224
 *         return self.h2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h2ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_71xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_70xMax, "Histo2D.xMax(self)\nHigh x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_71xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_71xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_70xMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_71xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_70xMax(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_70xMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Histo2D.pyx":226
 *     def xMax(self):
 *         """High x edge of the histo."""
 *         return self.h2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 226, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 226, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":224
 *         return self.h2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h2ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":228
 *         return self.h2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.h2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_73yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_72yMin, "Histo2D.yMin(self)\nLow y edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_73yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_73yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_72yMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_73yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_72yMin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_72yMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Histo2D.pyx":230
 *     def yMin(self):
 *         """Low y edge of the histo."""
 *         return self.h2ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 230, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 230, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 230, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":228
 *         return self.h2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.h2ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":232
 *         return self.h2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.h2ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_75yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_74yMax, "Histo2D.yMax(self)\nHigh y edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_75yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_75yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_74yMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_75yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_74yMax(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_74yMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Histo2D.pyx":234
 *     def yMax(self):
 *         """High y edge of the histo."""
 *         return self.h2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 234, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 234, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":232
 *         return self.h2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.h2ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":237
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_77numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_76numBins, "Histo2D.numBins(self)\n() -> int\n        Number of bins (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_77numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_77numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_76numBins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_77numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_76numBins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_76numBins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 0);

  /* "include/Histo2D.pyx":240
 *         """() -> int
 *         Number of bins (not including overflows)."""
 *         return self.h2ptr().numBins()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 240, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 240, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":237
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":242
 *         return self.h2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_79numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_78numBinsX, "Histo2D.numBinsX(self)\n() -> int\n        Number of bins (edges) along the x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_79numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_79numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_78numBinsX};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_79numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_78numBinsX(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_78numBinsX(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 0);

  /* "include/Histo2D.pyx":245
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 *         return self.h2ptr().numBinsX()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 245, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 245, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":242
 *         return self.h2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":247
 *         return self.h2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_81numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_80numBinsY, "Histo2D.numBinsY(self)\n() -> int\n        Number of bins (edges) along the y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_81numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_81numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_80numBinsY};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_81numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_80numBinsY(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_80numBinsY(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 0);

  /* "include/Histo2D.pyx":250
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 *         return self.h2ptr().numBinsY()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 250, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 250, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":247
 *         return self.h2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":253
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_83bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_82bins, "Histo2D.bins(self)\nAccess the ordered bins list.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_83bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_83bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_82bins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_83bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("bins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_82bins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_82bins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Histo2D *__pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 0);

  /* "include/Histo2D.pyx":255
 *     def bins(self):
 *         """Access the ordered bins list."""
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 255, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_2->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 255, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyInt_FromSize_t(__pyx_v_i); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_10 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 255, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":253
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Histo2D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":257
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h2ptr().numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_85bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_84bin, "Histo2D.bin(self, i)\nGet the i'th bin");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_85bin = {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_85bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_84bin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_85bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 257, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bin") < 0)) __PYX_ERR(3, 257, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 257, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_84bin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_84bin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 0);

  /* "include/Histo2D.pyx":260
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h2ptr().numBins())
 *         return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bin(i), self)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: it's more intuitive to have an index for each axis
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 260, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(3, 260, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D), (&__pyx_t_1->bin(__pyx_t_2)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":257
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h2ptr().numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":269
 *     #     return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.h2ptr().binIndexAt(x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_87binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_86binIndexAt, "Histo2D.binIndexAt(self, x, y)\nGet the bin index pair containing position (x,y)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_87binIndexAt = {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_87binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_86binIndexAt};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_87binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binIndexAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 269, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 269, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 2, 2, 1); __PYX_ERR(3, 269, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binIndexAt") < 0)) __PYX_ERR(3, 269, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(3, 269, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_86binIndexAt(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_86binIndexAt(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binIndexAt", 0);

  /* "include/Histo2D.pyx":271
 *     def binIndexAt(self, x, y):
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.h2ptr().binIndexAt(x, y)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 271, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 271, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 271, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->binIndexAt(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 271, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":269
 *     #     return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.h2ptr().binIndexAt(x, y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":273
 *         return self.h2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_89binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_88binAt, "Histo2D.binAt(self, x, y)\nGet the bin containing position (x,y)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_89binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_89binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_88binAt};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_89binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 273, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 273, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, 1); __PYX_ERR(3, 273, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binAt") < 0)) __PYX_ERR(3, 273, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(3, 273, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_88binAt(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_88binAt(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 0);

  /* "include/Histo2D.pyx":278
 *         #return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().binAt(x,y), self)
 *         # TODO: need out-of-range check to return None?
 *         return self.bin(self.binIndexAt(x,y))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_binIndexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_x, __pyx_v_y};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":273
 *         return self.h2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":281
 * 
 * 
 *     def addBin(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_91addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_90addBin, "Histo2D.addBin(self, xlow, xhigh, ylow, yhigh)\nAdd a bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_91addBin = {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_91addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_90addBin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_91addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 281, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 281, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 1); __PYX_ERR(3, 281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 281, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 2); __PYX_ERR(3, 281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 281, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 3); __PYX_ERR(3, 281, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBin") < 0)) __PYX_ERR(3, 281, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_xlow = values[0];
    __pyx_v_xhigh = values[1];
    __pyx_v_ylow = values[2];
    __pyx_v_yhigh = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, __pyx_nargs); __PYX_ERR(3, 281, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_90addBin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_90addBin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  std::pair<double,double>  __pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBin", 0);

  /* "include/Histo2D.pyx":283
 *     def addBin(self, xlow, xhigh, ylow, yhigh):
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                pair[double, double](ylow, yhigh))
 *         return self
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 283, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 283, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 283, __pyx_L1_error)
  try {
    __pyx_t_4 = std::pair<double,double> (__pyx_t_2, __pyx_t_3);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(3, 283, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":284
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 *                                pair[double, double](ylow, yhigh))             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 284, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 284, __pyx_L1_error)
  try {
    __pyx_t_5 = std::pair<double,double> (__pyx_t_3, __pyx_t_2);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(3, 284, __pyx_L1_error)
  }

  /* "include/Histo2D.pyx":283
 *     def addBin(self, xlow, xhigh, ylow, yhigh):
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                pair[double, double](ylow, yhigh))
 *         return self
 */
  __pyx_t_1->addBin(__pyx_t_4, __pyx_t_5); 

  /* "include/Histo2D.pyx":285
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 *                                pair[double, double](ylow, yhigh))
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def addBins(self, bins):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":281
 * 
 * 
 *     def addBin(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":287
 *         return self
 * 
 *     def addBins(self, bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         cdef vector[c.HistoBin2D] cbins
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_93addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_92addBins, "Histo2D.addBins(self, bins)\nAdd several bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_93addBins = {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_93addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_92addBins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_93addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_bins = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_bins,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_bins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 287, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBins") < 0)) __PYX_ERR(3, 287, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_bins = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBins", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 287, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_92addBins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_bins);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_92addBins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_bins) {
  std::vector<YODA::HistoBin2D>  __pyx_v_cbins;
  YODA::HistoBin2D *__pyx_v_cbin;
  PyObject *__pyx_v_elem = NULL;
  PyObject *__pyx_v_xlow = NULL;
  PyObject *__pyx_v_xhigh = NULL;
  PyObject *__pyx_v_ylow = NULL;
  PyObject *__pyx_v_yhigh = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  double __pyx_t_11;
  double __pyx_t_12;
  double __pyx_t_13;
  double __pyx_t_14;
  YODA::HistoBin2D *__pyx_t_15;
  int __pyx_t_16;
  YODA::Histo2D *__pyx_t_17;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBins", 0);

  /* "include/Histo2D.pyx":291
 *         cdef vector[c.HistoBin2D] cbins
 *         cdef c.HistoBin2D *cbin
 *         for elem in bins:             # <<<<<<<<<<<<<<
 *             if type(elem) is tuple:
 *                 xlow, xhigh, ylow, yhigh = elem
 */
  if (likely(PyList_CheckExact(__pyx_v_bins)) || PyTuple_CheckExact(__pyx_v_bins)) {
    __pyx_t_1 = __pyx_v_bins; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_bins); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 291, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(3, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(3, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 291, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_elem, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Histo2D.pyx":292
 *         cdef c.HistoBin2D *cbin
 *         for elem in bins:
 *             if type(elem) is tuple:             # <<<<<<<<<<<<<<
 *                 xlow, xhigh, ylow, yhigh = elem
 *                 # Allocating on the stack requires a default constructor [1]
 */
    __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_elem)) == ((PyObject *)(&PyTuple_Type)));
    if (__pyx_t_5) {

      /* "include/Histo2D.pyx":293
 *         for elem in bins:
 *             if type(elem) is tuple:
 *                 xlow, xhigh, ylow, yhigh = elem             # <<<<<<<<<<<<<<
 *                 # Allocating on the stack requires a default constructor [1]
 *                 # which HistoBin2D doesn't have.
 */
      if ((likely(PyTuple_CheckExact(__pyx_v_elem))) || (PyList_CheckExact(__pyx_v_elem))) {
        PyObject* sequence = __pyx_v_elem;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 4)) {
          if (size > 4) __Pyx_RaiseTooManyValuesError(4);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(3, 293, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 2); 
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 3); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 2); 
          __pyx_t_8 = PyList_GET_ITEM(sequence, 3); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        #else
        {
          Py_ssize_t i;
          PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8};
          for (i=0; i < 4; i++) {
            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(3, 293, __pyx_L1_error)
            __Pyx_GOTREF(item);
            *(temps[i]) = item;
          }
        }
        #endif
      } else {
        Py_ssize_t index = -1;
        PyObject** temps[4] = {&__pyx_t_4,&__pyx_t_6,&__pyx_t_7,&__pyx_t_8};
        __pyx_t_9 = PyObject_GetIter(__pyx_v_elem); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_9);
        for (index=0; index < 4; index++) {
          PyObject* item = __pyx_t_10(__pyx_t_9); if (unlikely(!item)) goto __pyx_L6_unpacking_failed;
          __Pyx_GOTREF(item);
          *(temps[index]) = item;
        }
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 4) < 0) __PYX_ERR(3, 293, __pyx_L1_error)
        __pyx_t_10 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L7_unpacking_done;
        __pyx_L6_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(3, 293, __pyx_L1_error)
        __pyx_L7_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_xlow, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_xhigh, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_v_ylow, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_v_yhigh, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "include/Histo2D.pyx":298
 *                 #
 *                 # [1] https://github.com/cython/cython/wiki/WrappingCPlusPlus#declare-a-var-with-the-wrapped-c-class
 *                 cbin = new c.HistoBin2D(xlow, xhigh, ylow, yhigh)             # <<<<<<<<<<<<<<
 *                 # Assuming this doesn't throw exceptions, or we are going to
 *                 # leak memory
 */
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 298, __pyx_L1_error)
      __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 298, __pyx_L1_error)
      __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 298, __pyx_L1_error)
      __pyx_t_14 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_14 == (double)-1) && PyErr_Occurred())) __PYX_ERR(3, 298, __pyx_L1_error)
      try {
        __pyx_t_15 = new YODA::HistoBin2D(__pyx_t_11, __pyx_t_12, __pyx_t_13, __pyx_t_14);
      } catch(...) {
        translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
        __PYX_ERR(3, 298, __pyx_L1_error)
      }
      __pyx_v_cbin = __pyx_t_15;

      /* "include/Histo2D.pyx":301
 *                 # Assuming this doesn't throw exceptions, or we are going to
 *                 # leak memory
 *                 cbins.push_back(deref(cbin))             # <<<<<<<<<<<<<<
 *                 del cbin
 *             elif type(elem) is HistoBin2D:
 */
      try {
        __pyx_v_cbins.push_back((*__pyx_v_cbin));
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(3, 301, __pyx_L1_error)
      }

      /* "include/Histo2D.pyx":302
 *                 # leak memory
 *                 cbins.push_back(deref(cbin))
 *                 del cbin             # <<<<<<<<<<<<<<
 *             elif type(elem) is HistoBin2D:
 *                 cbin = (<HistoBin2D>elem).hb2ptr()
 */
      delete __pyx_v_cbin;

      /* "include/Histo2D.pyx":292
 *         cdef c.HistoBin2D *cbin
 *         for elem in bins:
 *             if type(elem) is tuple:             # <<<<<<<<<<<<<<
 *                 xlow, xhigh, ylow, yhigh = elem
 *                 # Allocating on the stack requires a default constructor [1]
 */
      goto __pyx_L5;
    }

    /* "include/Histo2D.pyx":303
 *                 cbins.push_back(deref(cbin))
 *                 del cbin
 *             elif type(elem) is HistoBin2D:             # <<<<<<<<<<<<<<
 *                 cbin = (<HistoBin2D>elem).hb2ptr()
 *                 cbins.push_back(deref(cbin))
 */
    __pyx_t_5 = (((PyObject *)Py_TYPE(__pyx_v_elem)) == ((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D));
    if (likely(__pyx_t_5)) {

      /* "include/Histo2D.pyx":304
 *                 del cbin
 *             elif type(elem) is HistoBin2D:
 *                 cbin = (<HistoBin2D>elem).hb2ptr()             # <<<<<<<<<<<<<<
 *                 cbins.push_back(deref(cbin))
 *             else:
 */
      __pyx_t_15 = __pyx_f_4yoda_4core_10HistoBin2D_hb2ptr(((struct __pyx_obj_4yoda_4core_HistoBin2D *)__pyx_v_elem)); if (unlikely(__pyx_t_15 == ((YODA::HistoBin2D *)NULL))) __PYX_ERR(3, 304, __pyx_L1_error)
      __pyx_v_cbin = __pyx_t_15;

      /* "include/Histo2D.pyx":305
 *             elif type(elem) is HistoBin2D:
 *                 cbin = (<HistoBin2D>elem).hb2ptr()
 *                 cbins.push_back(deref(cbin))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(
 */
      try {
        __pyx_v_cbins.push_back((*__pyx_v_cbin));
      } catch(...) {
        __Pyx_CppExn2PyErr();
        __PYX_ERR(3, 305, __pyx_L1_error)
      }

      /* "include/Histo2D.pyx":303
 *                 cbins.push_back(deref(cbin))
 *                 del cbin
 *             elif type(elem) is HistoBin2D:             # <<<<<<<<<<<<<<
 *                 cbin = (<HistoBin2D>elem).hb2ptr()
 *                 cbins.push_back(deref(cbin))
 */
      goto __pyx_L5;
    }

    /* "include/Histo2D.pyx":307
 *                 cbins.push_back(deref(cbin))
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "Unsupported bin of type {}".format(type(elem))
 *                 )
 */
    /*else*/ {

      /* "include/Histo2D.pyx":308
 *             else:
 *                 raise ValueError(
 *                     "Unsupported bin of type {}".format(type(elem))             # <<<<<<<<<<<<<<
 *                 )
 *         self.h2ptr().addBins(cbins)
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Unsupported_bin_of_type, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = NULL;
      __pyx_t_16 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_16 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)Py_TYPE(__pyx_v_elem))};
        __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_16, 1+__pyx_t_16);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 308, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }

      /* "include/Histo2D.pyx":307
 *                 cbins.push_back(deref(cbin))
 *             else:
 *                 raise ValueError(             # <<<<<<<<<<<<<<
 *                     "Unsupported bin of type {}".format(type(elem))
 *                 )
 */
      __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(3, 307, __pyx_L1_error)
    }
    __pyx_L5:;

    /* "include/Histo2D.pyx":291
 *         cdef vector[c.HistoBin2D] cbins
 *         cdef c.HistoBin2D *cbin
 *         for elem in bins:             # <<<<<<<<<<<<<<
 *             if type(elem) is tuple:
 *                 xlow, xhigh, ylow, yhigh = elem
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":310
 *                     "Unsupported bin of type {}".format(type(elem))
 *                 )
 *         self.h2ptr().addBins(cbins)             # <<<<<<<<<<<<<<
 * 
 *     # def mergeBins(self, size_t a, size_t b):
 */
  __pyx_t_17 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_17 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 310, __pyx_L1_error)
  __pyx_t_17->addBins(__pyx_v_cbins); 

  /* "include/Histo2D.pyx":287
 *         return self
 * 
 *     def addBins(self, bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         cdef vector[c.HistoBin2D] cbins
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Histo2D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_elem);
  __Pyx_XDECREF(__pyx_v_xlow);
  __Pyx_XDECREF(__pyx_v_xhigh);
  __Pyx_XDECREF(__pyx_v_ylow);
  __Pyx_XDECREF(__pyx_v_yhigh);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":319
 * 
 * 
 *     def mkScatter(self, usefocus=False, binareadiv=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Histo2D to a Scatter3D, with optional argument to control the positions
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_95mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_94mkScatter, "Histo2D.mkScatter(self, usefocus=False, binareadiv=True)\nNone -> Scatter3D.\n        Convert this Histo2D to a Scatter3D, with optional argument to control the positions\n        of points within the bins, and whether z represents sumW or density.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_95mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_95mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_94mkScatter};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_95mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_usefocus = 0;
  PyObject *__pyx_v_binareadiv = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_usefocus,&__pyx_n_s_binareadiv,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefocus);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 319, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binareadiv);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 319, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkScatter") < 0)) __PYX_ERR(3, 319, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_usefocus = values[0];
    __pyx_v_binareadiv = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 319, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_94mkScatter(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_usefocus, __pyx_v_binareadiv);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_94mkScatter(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_binareadiv) {
  YODA::Scatter3D __pyx_v_s3;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  YODA::Scatter3D __pyx_t_4;
  YODA::Scatter3D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Histo2D.pyx":323
 *         Convert this Histo2D to a Scatter3D, with optional argument to control the positions
 *         of points within the bins, and whether z represents sumW or density."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Histo2D(deref(self.h2ptr()), usefocus, binareadiv)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 323, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_usefocus); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 323, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_binareadiv); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(3, 323, __pyx_L1_error)
  try {
    __pyx_t_4 = YODA::mkScatter((*__pyx_t_1), __pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 323, __pyx_L1_error)
  }
  __pyx_v_s3 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4);

  /* "include/Histo2D.pyx":324
 *         of points within the bins, and whether z represents sumW or density."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Histo2D(deref(self.h2ptr()), usefocus, binareadiv)
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(self, Histo2D h, efficiency=False):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_5 = __pyx_v_s3.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 324, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":319
 * 
 * 
 *     def mkScatter(self, usefocus=False, binareadiv=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Histo2D to a Scatter3D, with optional argument to control the positions
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":326
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Histo2D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo2D -> Scatter3D
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_97divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_96divideBy, "Histo2D.divideBy(self, Histo2D h, efficiency=False)\nHisto2D -> Scatter3D\n\n        Divide this histogram by Histo2D h, returning a Scatter3D. The optional 'efficiency'\n        argument, if set True, will use a binomial efficiency treatment of the errors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_97divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_97divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_96divideBy};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_97divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_h = 0;
  PyObject *__pyx_v_efficiency = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,&__pyx_n_s_efficiency,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_h)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 326, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_efficiency);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 326, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divideBy") < 0)) __PYX_ERR(3, 326, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo2D *)values[0]);
    __pyx_v_efficiency = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 0, 1, 2, __pyx_nargs); __PYX_ERR(3, 326, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_h), __pyx_ptype_4yoda_4core_Histo2D, 1, "h", 0))) __PYX_ERR(3, 326, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_96divideBy(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_h, __pyx_v_efficiency);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_96divideBy(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_h, PyObject *__pyx_v_efficiency) {
  YODA::Scatter3D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  YODA::Histo2D *__pyx_t_3;
  YODA::Histo2D *__pyx_t_4;
  YODA::Scatter3D __pyx_t_5;
  YODA::Scatter3D *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 0);

  /* "include/Histo2D.pyx":336
 *         # TODO: allow dividing profiles by histos, etc.? (But then what do the errors mean? Add in quad?)
 *         cdef c.Scatter3D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo2D_div_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_efficiency); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 336, __pyx_L1_error)
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "include/Histo2D.pyx":337
 *         cdef c.Scatter3D s
 *         if not efficiency:
 *             s = c.Histo2D_div_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             s = c.Histo2D_eff_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))
 */
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 337, __pyx_L1_error)
    __pyx_t_4 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_h); if (unlikely(__pyx_t_4 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 337, __pyx_L1_error)
    try {
      __pyx_t_5 = divide((*__pyx_t_3), (*__pyx_t_4));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 337, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);

    /* "include/Histo2D.pyx":336
 *         # TODO: allow dividing profiles by histos, etc.? (But then what do the errors mean? Add in quad?)
 *         cdef c.Scatter3D s
 *         if not efficiency:             # <<<<<<<<<<<<<<
 *             s = c.Histo2D_div_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":339
 *             s = c.Histo2D_div_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))
 *         else:
 *             s = c.Histo2D_eff_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 */
  /*else*/ {
    __pyx_t_4 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 339, __pyx_L1_error)
    __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_h); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 339, __pyx_L1_error)
    try {
      __pyx_t_5 = efficiency((*__pyx_t_4), (*__pyx_t_3));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(3, 339, __pyx_L1_error)
    }
    __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":340
 *         else:
 *             s = c.Histo2D_eff_Histo2D(deref(self.h2ptr()), deref(h.h2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_6 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 340, __pyx_L1_error)
  }
  __pyx_t_7 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":326
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Histo2D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo2D -> Scatter3D
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Histo2D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":344
 * 
 * 
 *     def __iadd__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_99__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_99__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 344, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_98__iadd__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_98__iadd__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  YODA::Histo2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/Histo2D.pyx":345
 * 
 *     def __iadd__(Histo2D self, Histo2D other):
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())             # <<<<<<<<<<<<<<
 *         return self
 *     def __isub__(Histo2D self, Histo2D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 345, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 345, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Histo2D.pyx":346
 *     def __iadd__(Histo2D self, Histo2D other):
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self             # <<<<<<<<<<<<<<
 *     def __isub__(Histo2D self, Histo2D other):
 *         c.Histo2D_isub_Histo2D(self.h2ptr(), other.h2ptr())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":344
 * 
 * 
 *     def __iadd__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":347
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 *     def __isub__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         c.Histo2D_isub_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_101__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_101__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 347, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_100__isub__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_100__isub__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Histo2D *__pyx_t_1;
  YODA::Histo2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/Histo2D.pyx":348
 *         return self
 *     def __isub__(Histo2D self, Histo2D other):
 *         c.Histo2D_isub_Histo2D(self.h2ptr(), other.h2ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 348, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 348, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Histo2D.pyx":349
 *     def __isub__(Histo2D self, Histo2D other):
 *         c.Histo2D_isub_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __add__(Histo2D self, Histo2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":347
 *         c.Histo2D_iadd_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 *     def __isub__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         c.Histo2D_isub_Histo2D(self.h2ptr(), other.h2ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":351
 *         return self
 * 
 *     def __add__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_103__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_103__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 351, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_102__add__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_102__add__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Histo2D *__pyx_t_2;
  YODA::Histo2D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Histo2D.pyx":352
 * 
 *     def __add__(Histo2D self, Histo2D other):
 *         h = Histo2D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Histo2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":353
 *     def __add__(Histo2D self, Histo2D other):
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))             # <<<<<<<<<<<<<<
 *         return h
 *     def __sub__(Histo2D self, Histo2D other):
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 353, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 353, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":354
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h             # <<<<<<<<<<<<<<
 *     def __sub__(Histo2D self, Histo2D other):
 *         h = Histo2D()
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":351
 *         return self
 * 
 *     def __add__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Histo2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":355
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h
 *     def __sub__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_sub_Histo2D(self.h2ptr(), other.h2ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_105__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_105__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 355, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_104__sub__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_104__sub__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Histo2D *__pyx_t_2;
  YODA::Histo2D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Histo2D.pyx":356
 *         return h
 *     def __sub__(Histo2D self, Histo2D other):
 *         h = Histo2D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Histo2D_sub_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Histo2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 356, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":357
 *     def __sub__(Histo2D self, Histo2D other):
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_sub_Histo2D(self.h2ptr(), other.h2ptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 357, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 357, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":358
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_sub_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     def __div__(Histo2D self, Histo2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Histo2D.pyx":355
 *         cutil.set_owned_ptr(h, c.Histo2D_add_Histo2D(self.h2ptr(), other.h2ptr()))
 *         return h
 *     def __sub__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         h = Histo2D()
 *         cutil.set_owned_ptr(h, c.Histo2D_sub_Histo2D(self.h2ptr(), other.h2ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Histo2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":360
 *         return h
 * 
 *     def __div__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_107__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_107__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 360, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_106__div__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_7Histo2D_106__div__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 0);

  /* "include/Histo2D.pyx":361
 * 
 *     def __div__(Histo2D self, Histo2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Histo2D self, Histo2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":360
 *         return h
 * 
 *     def __div__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

/* "include/Histo2D.pyx":363
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_109__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_109__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Histo2D, 1, "other", 0))) __PYX_ERR(3, 363, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_108__truediv__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_108__truediv__(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 0);

  /* "include/Histo2D.pyx":364
 * 
 *     def __truediv__(Histo2D self, Histo2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 364, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 364, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":363
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Histo2D self, Histo2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":371
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_111_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_110_mknp, "Histo2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_111_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_111_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_110_mknp};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_111_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 371, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(3, 371, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(3, 371, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_110_mknp(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_110_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Histo2D.pyx":372
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Histo2D.pyx":373
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 373, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Histo2D.pyx":374
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 374, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 374, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Histo2D.pyx":372
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Histo2D.pyx":375
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Histo2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(3, 375, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Histo2D.pyx":376
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Histo2D.pyx":372
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Histo2D.pyx":371
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":381
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.h2ptr().xEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_113xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_112xEdges, "Histo2D.xEdges(self)\nUnique x edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_113xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_113xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_112xEdges};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_113xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_112xEdges(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_112xEdges(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/Histo2D.pyx":383
 *     def xEdges(self):
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.h2ptr().xEdges())             # <<<<<<<<<<<<<<
 * 
 *     def xWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 383, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 383, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":381
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.h2ptr().xEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":385
 *         return self._mknp(self.h2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h2ptr().xWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_115xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_114xWidths, "Histo2D.xWidths(self)\nAll x widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_115xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_115xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_114xWidths};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_115xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_114xWidths(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_114xWidths(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 0);

  /* "include/Histo2D.pyx":387
 *     def xWidths(self):
 *         """All x widths of the histo."""
 *         return self._mknp(self.h2ptr().xWidths())             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 387, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 387, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":385
 *         return self._mknp(self.h2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h2ptr().xWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":389
 *         return self._mknp(self.h2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_117xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_116xMin, "Histo2D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_117xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_117xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_116xMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_117xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_116xMin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_116xMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Histo2D.pyx":391
 *     def xMin(self):
 *         """Lowest x value."""
 *         return self.xEdges()[0]             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 391, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":389
 *         return self._mknp(self.h2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":393
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_119xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_118xMax, "Histo2D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_119xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_119xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_118xMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_119xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_118xMax(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_118xMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Histo2D.pyx":395
 *     def xMax(self):
 *         """Highest x value."""
 *         return self.xEdges()[-1]             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":393
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":397
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_121xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_120xMins, "Histo2D.xMins(self, unique=True, asgrid=False)\nUnique/all x low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_121xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_121xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_120xMins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_121xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 397, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 397, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMins") < 0)) __PYX_ERR(3, 397, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 397, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_120xMins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_120xMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Histo2D.pyx":399
 *     def xMins(self, unique=True, asgrid=False):
 *         """Unique/all x low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[:-1]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 399, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":400
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 400, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":399
 *     def xMins(self, unique=True, asgrid=False):
 *         """Unique/all x low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[:-1]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":402
 *             rtn = self.xEdges()[:-1]
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 402, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 402, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 402, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 402, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 402, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 402, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 402, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 402, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 402, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 402, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":403
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 403, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":404
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 404, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 404, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 404, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":403
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":405
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":397
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":407
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_123xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_122xMaxs, "Histo2D.xMaxs(self, unique=True, asgrid=False)\nUnique/all x high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_123xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_123xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_122xMaxs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_123xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 407, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 407, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMaxs") < 0)) __PYX_ERR(3, 407, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 407, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_122xMaxs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_122xMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Histo2D.pyx":409
 *     def xMaxs(self, unique=True, asgrid=False):
 *         """Unique/all x high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[1:]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 409, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":410
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[1:]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 410, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 410, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":409
 *     def xMaxs(self, unique=True, asgrid=False):
 *         """Unique/all x high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[1:]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":412
 *             rtn = self.xEdges()[1:]
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 412, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 412, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 412, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 412, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 412, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 412, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 412, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":413
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 413, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":414
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 414, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 414, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":413
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":415
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xMids(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":407
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":417
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_125xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_124xMids, "Histo2D.xMids(self, unique=True, asgrid=False)\nUnique/all x bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_125xMids = {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_125xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_124xMids};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_125xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMids (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 417, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 417, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMids") < 0)) __PYX_ERR(3, 417, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMids", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 417, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_124xMids(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_124xMids(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMids", 0);

  /* "include/Histo2D.pyx":419
 *     def xMids(self, unique=True, asgrid=False):
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 419, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":420
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 *             rtn = (self.xMins() + self.xMaxs())/ 2.             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyFloat_DivideObjC(__pyx_t_4, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":419
 *     def xMids(self, unique=True, asgrid=False):
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":422
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 422, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 422, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 422, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 422, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 422, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 422, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 422, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 422, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":423
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 423, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":424
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 424, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 424, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":423
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":425
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":417
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":430
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_127xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_126xFoci, "Histo2D.xFoci(self, asgrid=False)\nAll x bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_127xFoci = {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_127xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_126xFoci};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_127xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFoci (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 430, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xFoci") < 0)) __PYX_ERR(3, 430, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xFoci", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 430, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_126xFoci(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_126xFoci(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFoci", 0);

  /* "include/Histo2D.pyx":432
 *     def xFoci(self, asgrid=False):
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 432, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 432, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 432, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 432, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 432, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 432, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 432, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 432, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":433
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 433, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":434
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 434, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":433
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":435
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":430
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":437
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_129xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_128xVals, "Histo2D.xVals(self, foci=False, asgrid=False)\nAll x values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_129xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_129xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_128xVals};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_129xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 437, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 437, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVals") < 0)) __PYX_ERR(3, 437, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVals", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 437, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_128xVals(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_128xVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Histo2D.pyx":439
 *     def xVals(self, foci=False, asgrid=False):
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 439, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 439, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, Py_False, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":437
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":441
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_131xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_130xErrs, "Histo2D.xErrs(self, foci=False, asgrid=False)\nAll x errors of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_131xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_131xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_130xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_131xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 441, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 441, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xErrs") < 0)) __PYX_ERR(3, 441, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 441, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_130xErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_130xErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Histo2D.pyx":444
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 444, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":445
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 445, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 445, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 445, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 445, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(3, 445, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/Histo2D.pyx":444
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":447
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 447, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 447, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 447, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 447, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 447, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":448
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 448, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":449
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_reshape, __pyx_v_rtn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Histo2D.pyx":448
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":450
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":441
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":455
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.h2ptr().yEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_133yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_132yEdges, "Histo2D.yEdges(self)\nUnique y edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_133yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_133yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_132yEdges};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_133yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_132yEdges(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_132yEdges(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 0);

  /* "include/Histo2D.pyx":457
 *     def yEdges(self):
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.h2ptr().yEdges())             # <<<<<<<<<<<<<<
 * 
 *     def yWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 457, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 457, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 457, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":455
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.h2ptr().yEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":459
 *         return self._mknp(self.h2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.h2ptr().yWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_135yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_134yWidths, "Histo2D.yWidths(self)\nAll y widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_135yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_135yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_134yWidths};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_135yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_134yWidths(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_134yWidths(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Histo2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 0);

  /* "include/Histo2D.pyx":461
 *     def yWidths(self):
 *         """All y widths of the histo."""
 *         return self._mknp(self.h2ptr().yWidths())             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_7Histo2D_h2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Histo2D *)NULL))) __PYX_ERR(3, 461, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(3, 461, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 461, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":459
 *         return self._mknp(self.h2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.h2ptr().yWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Histo2D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":463
 *         return self._mknp(self.h2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_137yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_136yMin, "Histo2D.yMin(self)\nLowest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_137yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_137yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_136yMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_137yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_136yMin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_136yMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Histo2D.pyx":465
 *     def yMin(self):
 *         """Lowest y value."""
 *         return self.yEdges()[0]             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 465, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":463
 *         return self._mknp(self.h2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":467
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_139yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_138yMax, "Histo2D.yMax(self)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_139yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_139yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_138yMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_139yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_138yMax(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_138yMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Histo2D.pyx":469
 *     def yMax(self):
 *         """Highest y value."""
 *         return self.yEdges()[-1]             # <<<<<<<<<<<<<<
 * 
 *     def yMins(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 469, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":467
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":471
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_141yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_140yMins, "Histo2D.yMins(self, unique=True, asgrid=False)\nUnique/all y low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_141yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_141yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_140yMins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_141yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 471, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 471, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMins") < 0)) __PYX_ERR(3, 471, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 471, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_140yMins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_140yMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Histo2D.pyx":473
 *     def yMins(self, unique=True, asgrid=False):
 *         """Unique/all y low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[:-1]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 473, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":474
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 *             rtn = self.yEdges()[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 474, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":473
 *     def yMins(self, unique=True, asgrid=False):
 *         """Unique/all y low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[:-1]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":476
 *             rtn = self.yEdges()[:-1]
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 476, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 476, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 476, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 476, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 476, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 476, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 476, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":477
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 477, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":478
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 478, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":477
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":479
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":471
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":481
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_143yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_142yMaxs, "Histo2D.yMaxs(self, unique=True, asgrid=False)\nUnique/all y high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_143yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_143yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_142yMaxs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_143yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 481, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 481, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMaxs") < 0)) __PYX_ERR(3, 481, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 481, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_142yMaxs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_142yMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Histo2D.pyx":483
 *     def yMaxs(self, unique=True, asgrid=False):
 *         """Unique/all y high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[1:]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 483, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":484
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 *             rtn = self.yEdges()[1:]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 484, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":483
 *     def yMaxs(self, unique=True, asgrid=False):
 *         """Unique/all y high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[1:]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":486
 *             rtn = self.yEdges()[1:]
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 486, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 486, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 486, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 486, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 486, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 486, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 486, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 486, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 486, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 486, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 486, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 486, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 486, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":487
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 487, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":488
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 488, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 488, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 488, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 488, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":487
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":489
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yMids(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":481
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":491
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_145yMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_144yMids, "Histo2D.yMids(self, unique=True, asgrid=False)\nUnique/all y bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_145yMids = {"yMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_145yMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_144yMids};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_145yMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMids (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 491, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 491, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMids") < 0)) __PYX_ERR(3, 491, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMids", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 491, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_144yMids(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_144yMids(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMids", 0);

  /* "include/Histo2D.pyx":493
 *     def yMids(self, unique=True, asgrid=False):
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 493, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":494
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 *             rtn = (self.yMins() + self.yMaxs())/ 2.             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyFloat_DivideObjC(__pyx_t_4, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":493
 *     def yMids(self, unique=True, asgrid=False):
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":496
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 496, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 496, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 496, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(3, 496, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 496, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 496, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 496, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 496, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 496, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":497
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 497, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":498
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(3, 498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 498, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Histo2D.pyx":497
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":499
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":491
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.yMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":505
 *     ## Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_147yFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_146yFoci, "Histo2D.yFoci(self, asgrid=False)\nAll y bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_147yFoci = {"yFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_147yFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_146yFoci};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_147yFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yFoci (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 505, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yFoci") < 0)) __PYX_ERR(3, 505, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yFoci", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 505, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_146yFoci(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_146yFoci(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yFoci", 0);

  /* "include/Histo2D.pyx":507
 *     def yFoci(self, asgrid=False):
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 507, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 507, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 507, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 507, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 507, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 507, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 507, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":508
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 508, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":509
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":508
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":510
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yVals(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":505
 *     ## Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.yFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":512
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_149yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_148yVals, "Histo2D.yVals(self, foci=False, asgrid=False)\nAll y values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_149yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_149yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_148yVals};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_149yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 512, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 512, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yVals") < 0)) __PYX_ERR(3, 512, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVals", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 512, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_148yVals(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_148yVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Histo2D.pyx":514
 *     def yVals(self, foci=False, asgrid=False):
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 514, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, Py_False, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":512
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":516
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_151yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_150yErrs, "Histo2D.yErrs(self, foci=False, asgrid=False)\nAll y errors of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_151yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_151yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_150yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_151yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 516, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 516, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yErrs") < 0)) __PYX_ERR(3, 516, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 516, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_150yErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_150yErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Histo2D.pyx":519
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 519, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":520
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 520, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 520, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 520, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 520, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(3, 520, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/Histo2D.pyx":519
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Histo2D.pyx":522
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 522, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 522, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 522, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(3, 522, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 522, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 522, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 522, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Histo2D.pyx":523
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(3, 523, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Histo2D.pyx":524
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 524, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_reshape, __pyx_v_rtn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Histo2D.pyx":523
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":525
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":516
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":530
 *     ## Filling properties in general
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_153sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_152sumWs, "Histo2D.sumWs(self, asgrid=False)\nAll sumW values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_153sumWs = {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_153sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_152sumWs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_153sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 530, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumWs") < 0)) __PYX_ERR(3, 530, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWs", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 530, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_152sumWs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_152sumWs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWs", 0);

  /* "include/Histo2D.pyx":532
 *     def sumWs(self, asgrid=False):
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 532, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 532, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 532, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 532, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 532, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 532, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":533
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 533, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":534
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 534, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 534, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 534, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":533
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":535
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def heights(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":530
 *     ## Filling properties in general
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":537
 *         return rtn
 * 
 *     def heights(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_155heights(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_154heights, "Histo2D.heights(self, asgrid=False)\nAll y heights of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_155heights = {"heights", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_155heights, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_154heights};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_155heights(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heights (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 537, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "heights") < 0)) __PYX_ERR(3, 537, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("heights", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 537, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.heights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_154heights(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_154heights(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heights", 0);

  /* "include/Histo2D.pyx":539
 *     def heights(self, asgrid=False):
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 539, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 539, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 539, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 539, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_height); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 539, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":540
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 540, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":541
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":540
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":542
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def volumes(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":537
 *         return rtn
 * 
 *     def heights(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.heights", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":544
 *         return rtn
 * 
 *     def volumes(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_157volumes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_156volumes, "Histo2D.volumes(self, asgrid=False)\nAll volumes of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_157volumes = {"volumes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_157volumes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_156volumes};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_157volumes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("volumes (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 544, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "volumes") < 0)) __PYX_ERR(3, 544, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("volumes", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 544, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.volumes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_156volumes(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_156volumes(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("volumes", 0);

  /* "include/Histo2D.pyx":546
 *     def volumes(self, asgrid=False):
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 546, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 546, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 546, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 546, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 546, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_volume); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 546, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 546, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":547
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 547, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":548
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 548, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":547
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":549
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zVals(self, vol=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":544
 *         return rtn
 * 
 *     def volumes(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.volumes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":551
 *         return rtn
 * 
 *     def zVals(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_159zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_158zVals, "Histo2D.zVals(self, vol=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_159zVals = {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_159zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_158zVals};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_159zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_vol = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vol,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_vol);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 551, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 551, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zVals") < 0)) __PYX_ERR(3, 551, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_vol = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zVals", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 551, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_158zVals(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_vol, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_158zVals(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_vol, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zVals", 0);

  /* "include/Histo2D.pyx":552
 * 
 *     def zVals(self, vol=False, asgrid=False):
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)             # <<<<<<<<<<<<<<
 * 
 *     def heightErrs(self, asymm=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_vol); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 552, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_volumes); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 552, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_heights); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 552, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 552, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":551
 *         return rtn
 * 
 *     def zVals(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":554
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 *     def heightErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_161heightErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_160heightErrs, "Histo2D.heightErrs(self, asymm=False, asgrid=False)\nAll height errors of the histo.\n\n        TODO: asymm arg / heightErrsMinus/Plus\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_161heightErrs = {"heightErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_161heightErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_160heightErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_161heightErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_asymm = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("heightErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asymm,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asymm);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 554, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 554, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "heightErrs") < 0)) __PYX_ERR(3, 554, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asymm = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("heightErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 554, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.heightErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_160heightErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asymm, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_160heightErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("heightErrs", 0);

  /* "include/Histo2D.pyx":559
 *         TODO: asymm arg / heightErrsMinus/Plus
 *         """
 *         rtn = self._mknp([b.heightErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 559, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 559, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 559, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 559, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 559, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 559, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_heightErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 559, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":560
 *         """
 *         rtn = self._mknp([b.heightErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 560, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":561
 *         rtn = self._mknp([b.heightErr() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 561, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 561, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 561, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 561, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":560
 *         """
 *         rtn = self._mknp([b.heightErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":562
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def volumeErrs(self, asymm=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":554
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 *     def heightErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.heightErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":564
 *         return rtn
 * 
 *     def volumeErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volume errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_163volumeErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_162volumeErrs, "Histo2D.volumeErrs(self, asymm=False, asgrid=False)\nAll volume errors of the histo.\n\n        TODO: asymm arg / areaErrsMinus/Plus?\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_163volumeErrs = {"volumeErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_163volumeErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_162volumeErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_163volumeErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_asymm = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("volumeErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asymm,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asymm);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 564, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 564, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "volumeErrs") < 0)) __PYX_ERR(3, 564, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asymm = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("volumeErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 564, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.volumeErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_162volumeErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asymm, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_162volumeErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("volumeErrs", 0);

  /* "include/Histo2D.pyx":573
 *         #    pass
 *         #else:
 *         rtn = self._mknp([b.volumeErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 573, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 573, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 573, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 573, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 573, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_volumeErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 573, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":574
 *         #else:
 *         rtn = self._mknp([b.volumeErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 574, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":575
 *         rtn = self._mknp([b.volumeErr() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 575, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":574
 *         #else:
 *         rtn = self._mknp([b.volumeErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":576
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def relErrs(self, asymm=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":564
 *         return rtn
 * 
 *     def volumeErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volume errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.volumeErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":578
 *         return rtn
 * 
 *     def relErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_165relErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_164relErrs, "Histo2D.relErrs(self, asymm=False, asgrid=False)\nAll relative errors of the histo.\n\n        TODO: asymm arg / areaErrsMinus/Plus?\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_165relErrs = {"relErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_165relErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_164relErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_165relErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_asymm = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("relErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asymm,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asymm);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 578, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 578, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "relErrs") < 0)) __PYX_ERR(3, 578, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asymm = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("relErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 578, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.relErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_164relErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_asymm, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_164relErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_asymm, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("relErrs", 0);

  /* "include/Histo2D.pyx":583
 *         TODO: asymm arg / areaErrsMinus/Plus?
 *         """
 *         rtn = self._mknp([b.relErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 583, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 583, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(3, 583, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 583, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_relErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(3, 583, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 583, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":584
 *         """
 *         rtn = self._mknp([b.relErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(3, 584, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Histo2D.pyx":585
 *         rtn = self._mknp([b.relErr() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":584
 *         """
 *         rtn = self._mknp([b.relErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":586
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zErrs(self, vol=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":578
 *         return rtn
 * 
 *     def relErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Histo2D.relErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":588
 *         return rtn
 * 
 *     def zErrs(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volErrs(asgrid) if vol else self.heightErrs(asgrid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_167zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_166zErrs, "Histo2D.zErrs(self, vol=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_167zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_167zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_166zErrs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_167zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_vol = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vol,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_vol);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 588, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 588, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zErrs") < 0)) __PYX_ERR(3, 588, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_vol = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 588, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_166zErrs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_vol, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_166zErrs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_vol, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 0);

  /* "include/Histo2D.pyx":589
 * 
 *     def zErrs(self, vol=False, asgrid=False):
 *         return self.volErrs(asgrid) if vol else self.heightErrs(asgrid)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_vol); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(3, 589, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_volErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 589, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_heightErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(3, 589, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 589, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":588
 *         return rtn
 * 
 *     def zErrs(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volErrs(asgrid) if vol else self.heightErrs(asgrid)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Histo2D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":592
 * 
 * 
 *     def zMins(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_169zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_168zMins, "Histo2D.zMins(self, area=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_169zMins = {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_169zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_168zMins};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_169zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 592, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 592, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMins") < 0)) __PYX_ERR(3, 592, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 592, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_168zMins(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_area, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_168zMins(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_zs = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_z = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMins", 0);

  /* "include/Histo2D.pyx":593
 * 
 *     def zMins(self, area=False, asgrid=False):
 *         zs = self.zVals(area)             # <<<<<<<<<<<<<<
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_zs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":594
 *     def zMins(self, area=False, asgrid=False):
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)             # <<<<<<<<<<<<<<
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 594, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":595
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_zs);
  __Pyx_GIVEREF(__pyx_v_zs);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_zs);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 595, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 595, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 595, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 595, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 595, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 595, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 595, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(3, 595, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 595, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_z, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Subtract(__pyx_v_z, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 595, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":596
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(3, 596, __pyx_L1_error)
  if (__pyx_t_13) {

    /* "include/Histo2D.pyx":597
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":596
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":598
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zMaxs(self, area=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":592
 * 
 * 
 *     def zMins(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_zs);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_z);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":600
 *         return rtn
 * 
 *     def zMaxs(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_171zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_170zMaxs, "Histo2D.zMaxs(self, area=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_171zMaxs = {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_171zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_170zMaxs};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_171zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 600, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 600, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMaxs") < 0)) __PYX_ERR(3, 600, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(3, 600, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_170zMaxs(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_area, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_170zMaxs(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_zs = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_z = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMaxs", 0);

  /* "include/Histo2D.pyx":601
 * 
 *     def zMaxs(self, area=False, asgrid=False):
 *         zs = self.zVals(area)             # <<<<<<<<<<<<<<
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_zs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":602
 *     def zMaxs(self, area=False, asgrid=False):
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)             # <<<<<<<<<<<<<<
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 602, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 602, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":603
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_zs);
  __Pyx_GIVEREF(__pyx_v_zs);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_zs);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(3, 603, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 603, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 603, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(3, 603, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 603, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(3, 603, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(3, 603, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(3, 603, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(3, 603, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(3, 603, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(3, 603, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(3, 603, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_z, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Add(__pyx_v_z, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(3, 603, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Histo2D.pyx":604
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(3, 604, __pyx_L1_error)
  if (__pyx_t_13) {

    /* "include/Histo2D.pyx":605
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(3, 605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(3, 605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Histo2D.pyx":604
 *         es = self.zErrs(area)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Histo2D.pyx":606
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zMin(self, area=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":600
 *         return rtn
 * 
 *     def zMaxs(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Histo2D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_zs);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_z);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":608
 *         return rtn
 * 
 *     def zMin(self, area=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(area))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_173zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_172zMin, "Histo2D.zMin(self, area=False)\nLowest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_173zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_173zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_172zMin};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_173zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 608, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMin") < 0)) __PYX_ERR(3, 608, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMin", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 608, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_172zMin(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_172zMin(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 0);

  /* "include/Histo2D.pyx":610
 *     def zMin(self, area=False):
 *         """Lowest z value."""
 *         return min(self.zMins(area))             # <<<<<<<<<<<<<<
 * 
 *     def zMax(self, area=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 610, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":608
 *         return rtn
 * 
 *     def zMin(self, area=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(area))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Histo2D.pyx":612
 *         return min(self.zMins(area))
 * 
 *     def zMax(self, area=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(area))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_175zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_174zMax, "Histo2D.zMax(self, area=False)\nHighest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_175zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_175zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_174zMax};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_175zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_area = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_area,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_area);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(3, 612, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMax") < 0)) __PYX_ERR(3, 612, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_area = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMax", 0, 0, 1, __pyx_nargs); __PYX_ERR(3, 612, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_174zMax(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v_area);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_174zMax(struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, PyObject *__pyx_v_area) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 0);

  /* "include/Histo2D.pyx":614
 *     def zMax(self, area=False):
 *         """Highest z value."""
 *         return max(self.zMaxs(area))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_area};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Histo2D.pyx":612
 *         return min(self.zMins(area))
 * 
 *     def zMax(self, area=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(area))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Histo2D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_177__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_176__reduce_cython__, "Histo2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_177__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_177__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_176__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_177__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_176__reduce_cython__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_176__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_179__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Histo2D_178__setstate_cython__, "Histo2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Histo2D_179__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_179__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_178__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Histo2D_179__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Histo2D_178__setstate_cython__(((struct __pyx_obj_4yoda_4core_Histo2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Histo2D_178__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Histo2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Histo2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":31
 *     """
 * 
 *     cdef inline c.Profile2D* p2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Profile2D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Profile2D *__pyx_f_4yoda_4core_9Profile2D_p2ptr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  YODA::Profile2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("p2ptr", 0);

  /* "include/Profile2D.pyx":32
 * 
 *     cdef inline c.Profile2D* p2ptr(self) except NULL:
 *         return <c.Profile2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(24, 32, __pyx_L1_error)
  __pyx_r = ((YODA::Profile2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":31
 *     """
 * 
 *     cdef inline c.Profile2D* p2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Profile2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.p2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":35
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Profile2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Profile2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D___init__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_9Profile2D___init__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Profile2D.pyx":36
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init2(Profile2D self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile2D__init2); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile2D__init4); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Profile2D__init8); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyList_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyList_SET_ITEM(__pyx_t_5, 2, __pyx_t_4);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5);
  __pyx_t_5 = 0;
  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Profile2D.pyx":35
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":38
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Profile2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_3_Profile2D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_2__init2, "Profile2D.__init2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_3_Profile2D__init2 = {"_Profile2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_3_Profile2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_2__init2};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_3_Profile2D__init2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile2D__init2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 38, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 38, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile2D__init2") < 0)) __PYX_ERR(24, 38, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile2D__init2", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 38, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_2__init2(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_2__init2(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Profile2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile2D__init2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile2D.pyx":39
 * 
 *     def __init2(Profile2D self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Profile2D.pyx":40
 *     def __init2(Profile2D self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Profile2D.pyx":41
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 41, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 41, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Profile2D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 41, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Profile2D.pyx":38
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Profile2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":43
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_5_Profile2D__init4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_4__init4, "Profile2D.__init4(self, xedges, yedges, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_5_Profile2D__init4 = {"_Profile2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_5_Profile2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_4__init4};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_5_Profile2D__init4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xedges = 0;
  PyObject *__pyx_v_yedges = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile2D__init4 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xedges,&__pyx_n_s_yedges,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    values[3] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xedges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 43, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yedges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 43, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init4", 0, 2, 4, 1); __PYX_ERR(24, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 43, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 43, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile2D__init4") < 0)) __PYX_ERR(24, 43, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_xedges = values[0];
    __pyx_v_yedges = values[1];
    __pyx_v_path = values[2];
    __pyx_v_title = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile2D__init4", 0, 2, 4, __pyx_nargs); __PYX_ERR(24, 43, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_4__init4(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_xedges, __pyx_v_yedges, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_4__init4(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xedges, PyObject *__pyx_v_yedges, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<double>  __pyx_t_1;
  std::vector<double>  __pyx_t_2;
  std::string __pyx_t_3;
  std::string __pyx_t_4;
  YODA::Profile2D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile2D__init4", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile2D.pyx":44
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         # TODO: Do some type-checking and allow iterables of ProfileBin2D as well?
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Profile2D.pyx":45
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         # TODO: Do some type-checking and allow iterables of ProfileBin2D as well?
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Profile2D.pyx":47
 *         title = title
 *         # TODO: Do some type-checking and allow iterables of ProfileBin2D as well?
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_vector_from_py_double(__pyx_v_xedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 47, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_yedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 47, __pyx_L1_error)
  __pyx_t_3 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 47, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 47, __pyx_L1_error)
  try {
    __pyx_t_5 = new YODA::Profile2D(__pyx_t_1, __pyx_t_2, ((std::string)__pyx_t_3), ((std::string)__pyx_t_4));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 47, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "include/Profile2D.pyx":43
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":49
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_7_Profile2D__init8(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_6__init8, "Profile2D.__init8(self, nxbins, xlow, xhigh, nybins, ylow, yhigh, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_7_Profile2D__init8 = {"_Profile2D__init8", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_7_Profile2D__init8, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_6__init8};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_7_Profile2D__init8(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nxbins = 0;
  PyObject *__pyx_v_xlow = 0;
  PyObject *__pyx_v_xhigh = 0;
  PyObject *__pyx_v_nybins = 0;
  PyObject *__pyx_v_ylow = 0;
  PyObject *__pyx_v_yhigh = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Profile2D__init8 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nxbins,&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_nybins,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[8] = {0,0,0,0,0,0,0,0};
    values[6] = ((PyObject *)__pyx_kp_s__2);
    values[7] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nxbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, 1); __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, 2); __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nybins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, 3); __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (likely((values[4] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, 4); __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (likely((values[5] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, 5); __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[6] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  7:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[7] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 49, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Profile2D__init8") < 0)) __PYX_ERR(24, 49, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  8: values[7] = __Pyx_Arg_FASTCALL(__pyx_args, 7);
        CYTHON_FALLTHROUGH;
        case  7: values[6] = __Pyx_Arg_FASTCALL(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nxbins = values[0];
    __pyx_v_xlow = values[1];
    __pyx_v_xhigh = values[2];
    __pyx_v_nybins = values[3];
    __pyx_v_ylow = values[4];
    __pyx_v_yhigh = values[5];
    __pyx_v_path = values[6];
    __pyx_v_title = values[7];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Profile2D__init8", 0, 6, 8, __pyx_nargs); __PYX_ERR(24, 49, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init8", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_6__init8(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_nxbins, __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_nybins, __pyx_v_ylow, __pyx_v_yhigh, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_6__init8(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_nxbins, PyObject *__pyx_v_xlow, PyObject *__pyx_v_xhigh, PyObject *__pyx_v_nybins, PyObject *__pyx_v_ylow, PyObject *__pyx_v_yhigh, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  size_t __pyx_t_4;
  double __pyx_t_5;
  double __pyx_t_6;
  std::string __pyx_t_7;
  std::string __pyx_t_8;
  YODA::Profile2D *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Profile2D__init8", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Profile2D.pyx":50
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Profile2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Profile2D.pyx":51
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Profile2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Profile2D.pyx":52
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Profile2D(nxbins, xlow, xhigh,  nybins, ylow, yhigh,  <string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_nxbins); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xlow); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xhigh); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_v_nybins); if (unlikely((__pyx_t_4 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_ylow); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_6 = __pyx_PyFloat_AsDouble(__pyx_v_yhigh); if (unlikely((__pyx_t_6 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 52, __pyx_L1_error)
  try {
    __pyx_t_9 = new YODA::Profile2D(__pyx_t_1, __pyx_t_2, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, ((std::string)__pyx_t_7), ((std::string)__pyx_t_8));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 52, __pyx_L1_error)
  }
  __pyx_t_10 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

  /* "include/Profile2D.pyx":49
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D._Profile2D__init8", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":55
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().numBins()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Profile2D_9__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Profile2D_9__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_8__len__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Profile2D_8__len__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  size_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Profile2D.pyx":56
 * 
 *     def __len__(self):
 *         return self.p2ptr().numBins()             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 56, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 56, __pyx_L1_error)
  }
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":55
 * 
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().numBins()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":58
 *         return self.p2ptr().numBins()
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_10__getitem__, "Direct access to bins");
#if CYTHON_UPDATE_DESCRIPTOR_DOC
struct wrapperbase __pyx_wrapperbase_4yoda_4core_9Profile2D_10__getitem__;
#endif
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_11__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_10__getitem__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_10__getitem__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Profile2D *__pyx_t_8;
  __Pyx_FakeReference<YODA::ProfileBin2D> __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Profile2D.pyx":60
 *     def __getitem__(self, py_ix):
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bins().at(i), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(24, 60, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBins); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 60, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(24, 60, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/Profile2D.pyx":61
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 *         return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bins().at(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 61, __pyx_L1_error)
  try {
    __pyx_t_9 = __pyx_t_8->bins().at(__pyx_v_i);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(24, 61, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D), (&__pyx_t_9), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":58
 *         return self.p2ptr().numBins()
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         "Direct access to bins"
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":64
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_13__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_13__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_12__repr__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_12__repr__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Profile2D.pyx":65
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_8 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
    if (likely(__pyx_t_8)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_6, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_8, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_4);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_bins_sumw_0_2g, __pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":64
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d bins, sumw=%0.2g>" % (self.__class__.__name__, self.path(), len(self.bins()), self.sumW())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Profile2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":68
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_14reset, "Profile2D.reset(self)\nNone -> None.\n        Reset the histogram but leave the bin structure.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_15reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_14reset};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_15reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_14reset(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_14reset(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Profile2D.pyx":71
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 *         self.p2ptr().reset()             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 71, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 71, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":68
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":73
 *         self.p2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile2D.
 *         Clone this Profile2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_16clone, "Profile2D.clone(self)\nNone -> Profile2D.\n        Clone this Profile2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_17clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_16clone};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_17clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_16clone(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_16clone(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  YODA::Profile2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Profile2D.pyx":76
 *         """None -> Profile2D.
 *         Clone this Profile2D."""
 *         return cutil.new_owned_cls(Profile2D, self.p2ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 76, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 76, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Profile2D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":73
 *         self.p2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile2D.
 *         Clone this Profile2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":79
 * 
 * 
 *     def fill(self, double x, double y, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,z,[w]) -> None.
 *         Fill with given x,y & z values and optional weight and fill fraction."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_18fill, "Profile2D.fill(self, double x, double y, double z, double weight=1.0, double fraction=1.0)\n(x,y,z,[w]) -> None.\n        Fill with given x,y & z values and optional weight and fill fraction.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_19fill = {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_18fill};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_19fill(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_x;
  double __pyx_v_y;
  double __pyx_v_z;
  double __pyx_v_weight;
  double __pyx_v_fraction;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fill (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 1); __PYX_ERR(24, 79, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, 2); __PYX_ERR(24, 79, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fill") < 0)) __PYX_ERR(24, 79, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_x == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
    __pyx_v_y = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_y == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
    __pyx_v_z = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_z == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
    if (values[3]) {
      __pyx_v_weight = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_weight == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
    } else {
      __pyx_v_weight = ((double)1.0);
    }
    if (values[4]) {
      __pyx_v_fraction = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_fraction == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 79, __pyx_L3_error)
    } else {
      __pyx_v_fraction = ((double)1.0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fill", 0, 3, 5, __pyx_nargs); __PYX_ERR(24, 79, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_18fill(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_18fill(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_x, double __pyx_v_y, double __pyx_v_z, double __pyx_v_weight, double __pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fill", 0);

  /* "include/Profile2D.pyx":82
 *         """(x,y,z,[w]) -> None.
 *         Fill with given x,y & z values and optional weight and fill fraction."""
 *         self.p2ptr().fill(x, y, z, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 *     def fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 82, __pyx_L1_error)
  try {
    __pyx_t_1->fill(__pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 82, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":79
 * 
 * 
 *     def fill(self, double x, double y, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,z,[w]) -> None.
 *         Fill with given x,y & z values and optional weight and fill fraction."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.fill", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":84
 *         self.p2ptr().fill(x, y, z, weight, fraction)
 * 
 *     def fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,z,[w]) -> None.
 *         Fill bin i with value z and optional weight and fill fraction."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_20fillBin, "Profile2D.fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0)\n(i,z,[w]) -> None.\n        Fill bin i with value z and optional weight and fill fraction.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_21fillBin = {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_20fillBin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_21fillBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_i;
  double __pyx_v_z;
  double __pyx_v_weight;
  double __pyx_v_fraction;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("fillBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_z,&__pyx_n_s_weight,&__pyx_n_s_fraction,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("fillBin", 0, 2, 4, 1); __PYX_ERR(24, 84, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_weight);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fraction);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "fillBin") < 0)) __PYX_ERR(24, 84, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
    __pyx_v_z = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_z == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
    if (values[2]) {
      __pyx_v_weight = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_weight == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
    } else {
      __pyx_v_weight = ((double)1.0);
    }
    if (values[3]) {
      __pyx_v_fraction = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_fraction == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 84, __pyx_L3_error)
    } else {
      __pyx_v_fraction = ((double)1.0);
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("fillBin", 0, 2, 4, __pyx_nargs); __PYX_ERR(24, 84, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_20fillBin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_i, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_20fillBin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, size_t __pyx_v_i, double __pyx_v_z, double __pyx_v_weight, double __pyx_v_fraction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("fillBin", 0);

  /* "include/Profile2D.pyx":87
 *         """(i,z,[w]) -> None.
 *         Fill bin i with value z and optional weight and fill fraction."""
 *         self.p2ptr().fillBin(i, z, weight, fraction)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 87, __pyx_L1_error)
  try {
    __pyx_t_1->fillBin(__pyx_v_i, __pyx_v_z, __pyx_v_weight, __pyx_v_fraction);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 87, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":84
 *         self.p2ptr().fill(x, y, z, weight, fraction)
 * 
 *     def fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,z,[w]) -> None.
 *         Fill bin i with value z and optional weight and fill fraction."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.fillBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":90
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_22totalDbn, "Profile2D.totalDbn(self)\n() -> Dbn3D\n        The Dbn3D representing the total distribution.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_23totalDbn = {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_22totalDbn};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_23totalDbn(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("totalDbn (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("totalDbn", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "totalDbn", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_22totalDbn(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_22totalDbn(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("totalDbn", 0);

  /* "include/Profile2D.pyx":93
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn3D, new c.Dbn3D(self.p2ptr().totalDbn()), self)
 * 
 */
  __Pyx_XDECREF(__pyx_r);

  /* "include/Profile2D.pyx":94
 *         The Dbn3D representing the total distribution."""
 *         return cutil.new_borrowed_cls(
 *             Dbn3D, new c.Dbn3D(self.p2ptr().totalDbn()), self)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: reinstate
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 94, __pyx_L1_error)

  /* "include/Profile2D.pyx":93
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 *         return cutil.new_borrowed_cls(             # <<<<<<<<<<<<<<
 *             Dbn3D, new c.Dbn3D(self.p2ptr().totalDbn()), self)
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D), new YODA::Dbn3D(__pyx_t_1->totalDbn()), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":90
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Profile2D.totalDbn", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":104
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_25numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_24numEntries, "Profile2D.numEntries(self, includeoverflows=True)\n([bool]) -> float\n        Number of times this histogram was filled, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_25numEntries = {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_25numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_24numEntries};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_25numEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 104, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "numEntries") < 0)) __PYX_ERR(24, 104, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("numEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 104, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_24numEntries(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_24numEntries(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numEntries", 0);

  /* "include/Profile2D.pyx":107
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 *         return self.p2ptr().numEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def effNumEntries(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 107, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 107, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_unsigned_long(__pyx_t_1->numEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":104
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.numEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":109
 *         return self.p2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_27effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_26effNumEntries, "Profile2D.effNumEntries(self, includeoverflows=True)\n([bool]) -> float\n        Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_27effNumEntries = {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_27effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_26effNumEntries};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_27effNumEntries(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("effNumEntries (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 109, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "effNumEntries") < 0)) __PYX_ERR(24, 109, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("effNumEntries", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 109, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_26effNumEntries(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_26effNumEntries(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("effNumEntries", 0);

  /* "include/Profile2D.pyx":112
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 *         return self.p2ptr().effNumEntries(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 112, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 112, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->effNumEntries(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":109
 *         return self.p2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.effNumEntries", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":114
 *         return self.p2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_29sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_28sumW, "Profile2D.sumW(self, includeoverflows=True)\n([bool]) -> float\n        Sum of weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_29sumW = {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_29sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_28sumW};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_29sumW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 114, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW") < 0)) __PYX_ERR(24, 114, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 114, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_28sumW(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_28sumW(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW", 0);

  /* "include/Profile2D.pyx":117
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 *         return self.p2ptr().sumW(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def sumW2(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 117, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 117, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":114
 *         return self.p2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.sumW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":119
 *         return self.p2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_31sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_30sumW2, "Profile2D.sumW2(self, includeoverflows=True)\n([bool]) -> float\n        Sum of squared weights filled into this histogram.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_31sumW2 = {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_31sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_30sumW2};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_31sumW2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumW2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 119, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumW2") < 0)) __PYX_ERR(24, 119, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumW2", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 119, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_30sumW2(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_30sumW2(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumW2", 0);

  /* "include/Profile2D.pyx":122
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 *         return self.p2ptr().sumW2(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 122, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 122, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->sumW2(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":119
 *         return self.p2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.sumW2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":125
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_33xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_32xMean, "Profile2D.xMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_33xMean = {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_33xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_32xMean};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_33xMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 125, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMean") < 0)) __PYX_ERR(24, 125, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 125, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_32xMean(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_32xMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMean", 0);

  /* "include/Profile2D.pyx":128
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().xMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yMean(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 128, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 128, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":125
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":130
 *         return self.p2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_35yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_34yMean, "Profile2D.yMean(self, includeoverflows=True)\n([bool]) -> float\n        Mean y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_35yMean = {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_35yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_34yMean};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_35yMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 130, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMean") < 0)) __PYX_ERR(24, 130, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 130, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_34yMean(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_34yMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMean", 0);

  /* "include/Profile2D.pyx":133
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().yMean(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyMean(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 133, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 133, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yMean(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":130
 *         return self.p2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":135
 *         return self.p2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_37xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_36xyMean, "Profile2D.xyMean(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Mean (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_37xyMean = {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_37xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_36xyMean};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_37xyMean(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyMean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 135, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyMean") < 0)) __PYX_ERR(24, 135, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyMean", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 135, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_36xyMean(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_36xyMean(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyMean", 0);

  /* "include/Profile2D.pyx":138
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xMean(includeoverflows), self.yMean(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMean); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMean); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":135
 *         return self.p2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Profile2D.xyMean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":141
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_39xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_38xVariance, "Profile2D.xVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_39xVariance = {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_39xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_38xVariance};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_39xVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 141, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVariance") < 0)) __PYX_ERR(24, 141, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 141, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_38xVariance(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_38xVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVariance", 0);

  /* "include/Profile2D.pyx":144
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().xVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 144, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 144, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":141
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":146
 *         return self.p2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_41yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_40yVariance, "Profile2D.yVariance(self, includeoverflows=True)\n([bool]) -> float\n        Variance in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_41yVariance = {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_41yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_40yVariance};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_41yVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 146, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yVariance") < 0)) __PYX_ERR(24, 146, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 146, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_40yVariance(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_40yVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVariance", 0);

  /* "include/Profile2D.pyx":149
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().yVariance(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyVariance(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 149, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 149, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yVariance(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":146
 *         return self.p2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":151
 *         return self.p2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_43xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_42xyVariance, "Profile2D.xyVariance(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Variances in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_43xyVariance = {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_43xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_42xyVariance};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_43xyVariance(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyVariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 151, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyVariance") < 0)) __PYX_ERR(24, 151, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyVariance", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 151, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_42xyVariance(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_42xyVariance(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyVariance", 0);

  /* "include/Profile2D.pyx":154
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xVariance(includeoverflows), self.yVariance(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xVariance); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yVariance); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":151
 *         return self.p2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Profile2D.xyVariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":157
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_45xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_44xStdDev, "Profile2D.xStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_45xStdDev = {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_45xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_44xStdDev};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_45xStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 157, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdDev") < 0)) __PYX_ERR(24, 157, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 157, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_44xStdDev(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_44xStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdDev", 0);

  /* "include/Profile2D.pyx":160
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().xStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 160, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 160, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":157
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":162
 *         return self.p2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_47yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_46yStdDev, "Profile2D.yStdDev(self, includeoverflows=True)\n([bool]) -> float\n        Standard deviation in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_47yStdDev = {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_47yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_46yStdDev};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_47yStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 162, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yStdDev") < 0)) __PYX_ERR(24, 162, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 162, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_46yStdDev(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_46yStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdDev", 0);

  /* "include/Profile2D.pyx":165
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().yStdDev(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyStdDev(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 165, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 165, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yStdDev(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":162
 *         return self.p2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":167
 *         return self.p2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_49xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_48xyStdDev, "Profile2D.xyStdDev(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Standard deviations in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_49xyStdDev = {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_49xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_48xyStdDev};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_49xyStdDev(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdDev (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 167, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyStdDev") < 0)) __PYX_ERR(24, 167, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyStdDev", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 167, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_48xyStdDev(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_48xyStdDev(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdDev", 0);

  /* "include/Profile2D.pyx":170
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xStdDev(includeoverflows), self.yStdDev(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdDev); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdDev); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":167
 *         return self.p2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Profile2D.xyStdDev", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":173
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_51xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_50xStdErr, "Profile2D.xStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_51xStdErr = {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_50xStdErr};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_51xStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 173, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xStdErr") < 0)) __PYX_ERR(24, 173, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 173, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_50xStdErr(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_50xStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xStdErr", 0);

  /* "include/Profile2D.pyx":176
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().xStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 176, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 176, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 176, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":173
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":178
 *         return self.p2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_53yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_52yStdErr, "Profile2D.yStdErr(self, includeoverflows=True)\n([bool]) -> float\n        Standard error on the mean y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_53yStdErr = {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_53yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_52yStdErr};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_53yStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 178, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yStdErr") < 0)) __PYX_ERR(24, 178, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 178, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_52yStdErr(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_52yStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yStdErr", 0);

  /* "include/Profile2D.pyx":181
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().yStdErr(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyStdErr(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 181, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 181, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yStdErr(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":178
 *         return self.p2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":183
 *         return self.p2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_55xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_54xyStdErr, "Profile2D.xyStdErr(self, includeoverflows=True)\n([bool]) -> (float,float)\n        Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_55xyStdErr = {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_55xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_54xyStdErr};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_55xyStdErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyStdErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 183, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyStdErr") < 0)) __PYX_ERR(24, 183, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyStdErr", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 183, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_54xyStdErr(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_54xyStdErr(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyStdErr", 0);

  /* "include/Profile2D.pyx":186
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xStdErr(includeoverflows), self.yStdErr(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xStdErr); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yStdErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":183
 *         return self.p2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Profile2D.xyStdErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":189
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_57xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_56xRMS, "Profile2D.xRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in x of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_57xRMS = {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_57xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_56xRMS};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_57xRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 189, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xRMS") < 0)) __PYX_ERR(24, 189, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 189, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_56xRMS(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_56xRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xRMS", 0);

  /* "include/Profile2D.pyx":192
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().xRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def yRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 192, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 192, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->xRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":189
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":194
 *         return self.p2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_59yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_58yRMS, "Profile2D.yRMS(self, includeoverflows=True)\n([bool]) -> float\n        RMS in y of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_59yRMS = {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_59yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_58yRMS};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_59yRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 194, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yRMS") < 0)) __PYX_ERR(24, 194, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 194, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_58yRMS(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_58yRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yRMS", 0);

  /* "include/Profile2D.pyx":197
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 *         return self.p2ptr().yRMS(includeoverflows)             # <<<<<<<<<<<<<<
 * 
 *     def xyRMS(self, includeoverflows=True):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 197, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_includeoverflows); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 197, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_1->yRMS(__pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":194
 *         return self.p2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":199
 *         return self.p2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_61xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_60xyRMS, "Profile2D.xyRMS(self, includeoverflows=True)\n([bool]) -> (float,float)\n        RMS in (x,y) of the histogram, optionally excluding the overflows.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_61xyRMS = {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_61xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_60xyRMS};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_61xyRMS(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_includeoverflows = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xyRMS (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_includeoverflows,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_True);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_includeoverflows);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 199, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xyRMS") < 0)) __PYX_ERR(24, 199, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_includeoverflows = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xyRMS", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 199, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_60xyRMS(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_includeoverflows);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_60xyRMS(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_includeoverflows) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xyRMS", 0);

  /* "include/Profile2D.pyx":202
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 *         return util.XY(self.xRMS(includeoverflows), self.yRMS(includeoverflows))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_XY); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xRMS); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_includeoverflows};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yRMS); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_includeoverflows};
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 202, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":199
 *         return self.p2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Profile2D.xyRMS", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":206
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_63scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_62scaleW, "Profile2D.scaleW(self, w)\n(float) -> None.\n        Rescale the weights in this histogram by the factor w.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_63scaleW = {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_63scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_62scaleW};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_63scaleW(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_w = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleW (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_w)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 206, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleW") < 0)) __PYX_ERR(24, 206, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_w = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleW", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 206, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_62scaleW(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_w);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_62scaleW(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_w) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleW", 0);

  /* "include/Profile2D.pyx":209
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 *         self.p2ptr().scaleW(w)             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, double f):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 209, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_w); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 209, __pyx_L1_error)
  try {
    __pyx_t_1->scaleW(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 209, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":206
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.scaleW", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":211
 *         self.p2ptr().scaleW(w)
 * 
 *     def scaleZ(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the z-direction (profiled value) in this histogram by the factor f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_65scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_64scaleZ, "Profile2D.scaleZ(self, double f)\n(float) -> None.\n        Scale the z-direction (profiled value) in this histogram by the factor f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_65scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_65scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_64scaleZ};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_65scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_f;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 211, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleZ") < 0)) __PYX_ERR(24, 211, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_f == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 211, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 211, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_64scaleZ(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_64scaleZ(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_f) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleZ", 0);

  /* "include/Profile2D.pyx":214
 *         """(float) -> None.
 *         Scale the z-direction (profiled value) in this histogram by the factor f."""
 *         self.p1ptr().scaleZ(f)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_p1ptr); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_scaleZ); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_f); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":211
 *         self.p2ptr().scaleW(w)
 * 
 *     def scaleZ(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the z-direction (profiled value) in this histogram by the factor f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile2D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":217
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_67xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_66xMin, "Profile2D.xMin(self)\nLow x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_67xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_67xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_66xMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_67xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_66xMin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_66xMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Profile2D.pyx":219
 *     def xMin(self):
 *         """Low x edge of the histo."""
 *         return self.p2ptr().xMin()             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 219, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 219, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":217
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p2ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":221
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p2ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_69xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_68xMax, "Profile2D.xMax(self)\nHigh x edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_69xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_69xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_68xMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_69xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_68xMax(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_68xMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Profile2D.pyx":223
 *     def xMax(self):
 *         """High x edge of the histo."""
 *         return self.p2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 223, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 223, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 223, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":221
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p2ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":225
 *         return self.p2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.p2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_71yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_70yMin, "Profile2D.yMin(self)\nLow y edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_71yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_71yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_70yMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_71yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_70yMin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_70yMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Profile2D.pyx":227
 *     def yMin(self):
 *         """Low y edge of the histo."""
 *         return self.p2ptr().yMin()             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 227, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 227, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 227, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":225
 *         return self.p2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.p2ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":229
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.p2ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_73yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_72yMax, "Profile2D.yMax(self)\nHigh y edge of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_73yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_73yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_72yMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_73yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_72yMax(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_72yMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Profile2D.pyx":231
 *     def yMax(self):
 *         """High y edge of the histo."""
 *         return self.p2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 231, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 231, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":229
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.p2ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":234
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_75numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_74numBins, "Profile2D.numBins(self)\n() -> int\n        Number of bins (not including overflows).");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_75numBins = {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_75numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_74numBins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_75numBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_74numBins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_74numBins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBins", 0);

  /* "include/Profile2D.pyx":237
 *         """() -> int
 *         Number of bins (not including overflows)."""
 *         return self.p2ptr().numBins()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsX(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 237, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBins();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 237, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":234
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.numBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":239
 *         return self.p2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_77numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_76numBinsX, "Profile2D.numBinsX(self)\n() -> int\n        Number of bins (edges) along the x axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_77numBinsX = {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_77numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_76numBinsX};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_77numBinsX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsX (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsX", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsX", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_76numBinsX(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_76numBinsX(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsX", 0);

  /* "include/Profile2D.pyx":242
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 *         return self.p2ptr().numBinsX()             # <<<<<<<<<<<<<<
 * 
 *     def numBinsY(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 242, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsX();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 242, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":239
 *         return self.p2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.numBinsX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":244
 *         return self.p2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_79numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_78numBinsY, "Profile2D.numBinsY(self)\n() -> int\n        Number of bins (edges) along the y axis.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_79numBinsY = {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_79numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_78numBinsY};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_79numBinsY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numBinsY (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numBinsY", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numBinsY", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_78numBinsY(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_78numBinsY(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numBinsY", 0);

  /* "include/Profile2D.pyx":247
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 *         return self.p2ptr().numBinsY()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 247, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numBinsY();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 247, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":244
 *         return self.p2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.numBinsY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":250
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_81bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_80bins, "Profile2D.bins(self)\nAccess the ordered bins list.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_81bins = {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_81bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_80bins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_81bins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("bins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "bins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_80bins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_80bins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bins", 0);

  /* "include/Profile2D.pyx":252
 *     def bins(self):
 *         """Access the ordered bins list."""
 *         return list(self)             # <<<<<<<<<<<<<<
 * 
 *     def bin(self, i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PySequence_List(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 252, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":250
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile2D.bins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":254
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.p2ptr().numBins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_83bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_82bin, "Profile2D.bin(self, i)\nGet the i'th bin");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_83bin = {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_83bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_82bin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_83bin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 254, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "bin") < 0)) __PYX_ERR(24, 254, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("bin", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 254, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_82bin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_82bin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bin", 0);

  /* "include/Profile2D.pyx":257
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.p2ptr().numBins())
 *         return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bin(i), self)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: it's more intuitive to have an index for each axis
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 257, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(24, 257, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D), (&__pyx_t_1->bin(__pyx_t_2)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":254
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.p2ptr().numBins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":266
 *     #     return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.p2ptr().binIndexAt(x, y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_85binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_84binIndexAt, "Profile2D.binIndexAt(self, x, y)\nGet the bin index pair containing position (x,y)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_85binIndexAt = {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_85binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_84binIndexAt};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_85binIndexAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binIndexAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 266, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 266, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 2, 2, 1); __PYX_ERR(24, 266, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binIndexAt") < 0)) __PYX_ERR(24, 266, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binIndexAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 266, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_84binIndexAt(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_84binIndexAt(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binIndexAt", 0);

  /* "include/Profile2D.pyx":268
 *     def binIndexAt(self, x, y):
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.p2ptr().binIndexAt(x, y)             # <<<<<<<<<<<<<<
 * 
 *     def binAt(self, x, y):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 268, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 268, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 268, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_1->binIndexAt(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 268, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":266
 *     #     return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.p2ptr().binIndexAt(x, y)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.binIndexAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":270
 *         return self.p2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_87binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_86binAt, "Profile2D.binAt(self, x, y)\nGet the bin containing position (x,y)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_87binAt = {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_87binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_86binAt};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_87binAt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("binAt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 270, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 270, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, 1); __PYX_ERR(24, 270, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "binAt") < 0)) __PYX_ERR(24, 270, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("binAt", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 270, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_86binAt(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_86binAt(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("binAt", 0);

  /* "include/Profile2D.pyx":275
 *         #return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().binAt(x,y), self)
 *         # TODO: need out-of-range check to return None?
 *         return self.bin(self.binIndexAt(x,y))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_binIndexAt); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_x, __pyx_v_y};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 275, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":270
 *         return self.p2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.binAt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":278
 * 
 * 
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_89addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_88addBin, "Profile2D.addBin(self, double xlow, double xhigh, double ylow, double yhigh)\nAdd a bin.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_89addBin = {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_89addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_88addBin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_89addBin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  double __pyx_v_xlow;
  double __pyx_v_xhigh;
  double __pyx_v_ylow;
  double __pyx_v_yhigh;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xlow,&__pyx_n_s_xhigh,&__pyx_n_s_ylow,&__pyx_n_s_yhigh,0};
    PyObject* values[4] = {0,0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xlow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 1); __PYX_ERR(24, 278, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ylow)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 2); __PYX_ERR(24, 278, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yhigh)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, 3); __PYX_ERR(24, 278, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBin") < 0)) __PYX_ERR(24, 278, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
      values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
    }
    __pyx_v_xlow = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xlow == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
    __pyx_v_xhigh = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_xhigh == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
    __pyx_v_ylow = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_ylow == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
    __pyx_v_yhigh = __pyx_PyFloat_AsDouble(values[3]); if (unlikely((__pyx_v_yhigh == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 278, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBin", 1, 4, 4, __pyx_nargs); __PYX_ERR(24, 278, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_88addBin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_xlow, __pyx_v_xhigh, __pyx_v_ylow, __pyx_v_yhigh);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_88addBin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, double __pyx_v_xlow, double __pyx_v_xhigh, double __pyx_v_ylow, double __pyx_v_yhigh) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  std::pair<double,double>  __pyx_t_2;
  std::pair<double,double>  __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBin", 0);

  /* "include/Profile2D.pyx":280
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                  pair[double, double](ylow, yhigh))
 *         return self
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 280, __pyx_L1_error)
  try {
    __pyx_t_2 = std::pair<double,double> (__pyx_v_xlow, __pyx_v_xhigh);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(24, 280, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":281
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 *                                  pair[double, double](ylow, yhigh))             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  try {
    __pyx_t_3 = std::pair<double,double> (__pyx_v_ylow, __pyx_v_yhigh);
  } catch(...) {
    __Pyx_CppExn2PyErr();
    __PYX_ERR(24, 281, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":280
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),             # <<<<<<<<<<<<<<
 *                                  pair[double, double](ylow, yhigh))
 *         return self
 */
  try {
    __pyx_t_1->addBin(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 280, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":282
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 *                                  pair[double, double](ylow, yhigh))
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def addBins(self, xcuts, ycuts):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":278
 * 
 * 
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.addBin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":284
 *         return self
 * 
 *     def addBins(self, xcuts, ycuts):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_91addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_90addBins, "Profile2D.addBins(self, xcuts, ycuts)\nAdd several bins.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_91addBins = {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_91addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_90addBins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_91addBins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xcuts = 0;
  PyObject *__pyx_v_ycuts = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addBins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xcuts,&__pyx_n_s_ycuts,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xcuts)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 284, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ycuts)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 284, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("addBins", 1, 2, 2, 1); __PYX_ERR(24, 284, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addBins") < 0)) __PYX_ERR(24, 284, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_xcuts = values[0];
    __pyx_v_ycuts = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addBins", 1, 2, 2, __pyx_nargs); __PYX_ERR(24, 284, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_90addBins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_xcuts, __pyx_v_ycuts);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_90addBins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xcuts, PyObject *__pyx_v_ycuts) {
  std::vector<double>  __pyx_v__xcuts;
  std::vector<double>  __pyx_v__ycuts;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_v_y = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  double __pyx_t_5;
  YODA::Profile2D *__pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addBins", 0);

  /* "include/Profile2D.pyx":289
 *         cdef vector[double] _xcuts
 *         cdef vector[double] _ycuts
 *         for x in xcuts:             # <<<<<<<<<<<<<<
 *             _xcuts.push_back(x)
 *         for y in ycuts:
 */
  if (likely(PyList_CheckExact(__pyx_v_xcuts)) || PyTuple_CheckExact(__pyx_v_xcuts)) {
    __pyx_t_1 = __pyx_v_xcuts; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_xcuts); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 289, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(24, 289, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 289, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(24, 289, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 289, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 289, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Profile2D.pyx":290
 *         cdef vector[double] _ycuts
 *         for x in xcuts:
 *             _xcuts.push_back(x)             # <<<<<<<<<<<<<<
 *         for y in ycuts:
 *             _ycuts.push_back(y)
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 290, __pyx_L1_error)
    try {
      __pyx_v__xcuts.push_back(__pyx_t_5);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(24, 290, __pyx_L1_error)
    }

    /* "include/Profile2D.pyx":289
 *         cdef vector[double] _xcuts
 *         cdef vector[double] _ycuts
 *         for x in xcuts:             # <<<<<<<<<<<<<<
 *             _xcuts.push_back(x)
 *         for y in ycuts:
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":291
 *         for x in xcuts:
 *             _xcuts.push_back(x)
 *         for y in ycuts:             # <<<<<<<<<<<<<<
 *             _ycuts.push_back(y)
 *         self.p2ptr().addBins(_xcuts, _ycuts)
 */
  if (likely(PyList_CheckExact(__pyx_v_ycuts)) || PyTuple_CheckExact(__pyx_v_ycuts)) {
    __pyx_t_1 = __pyx_v_ycuts; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_ycuts); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 291, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(24, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(24, 291, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 291, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_y, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Profile2D.pyx":292
 *             _xcuts.push_back(x)
 *         for y in ycuts:
 *             _ycuts.push_back(y)             # <<<<<<<<<<<<<<
 *         self.p2ptr().addBins(_xcuts, _ycuts)
 *         return self
 */
    __pyx_t_5 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_5 == (double)-1) && PyErr_Occurred())) __PYX_ERR(24, 292, __pyx_L1_error)
    try {
      __pyx_v__ycuts.push_back(__pyx_t_5);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(24, 292, __pyx_L1_error)
    }

    /* "include/Profile2D.pyx":291
 *         for x in xcuts:
 *             _xcuts.push_back(x)
 *         for y in ycuts:             # <<<<<<<<<<<<<<
 *             _ycuts.push_back(y)
 *         self.p2ptr().addBins(_xcuts, _ycuts)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":293
 *         for y in ycuts:
 *             _ycuts.push_back(y)
 *         self.p2ptr().addBins(_xcuts, _ycuts)             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_6 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 293, __pyx_L1_error)
  try {
    __pyx_t_6->addBins(__pyx_v__xcuts, __pyx_v__ycuts);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 293, __pyx_L1_error)
  }

  /* "include/Profile2D.pyx":294
 *             _ycuts.push_back(y)
 *         self.p2ptr().addBins(_xcuts, _ycuts)
 *         return self             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":284
 *         return self
 * 
 *     def addBins(self, xcuts, ycuts):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Profile2D.addBins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_y);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":304
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Profile2D to a Scatter3D, with z representing
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_93mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_92mkScatter, "Profile2D.mkScatter(self, usefocus=False, usestddev=False)\nNone -> Scatter3D.\n        Convert this Profile2D to a Scatter3D, with z representing\n        mean bin y values and their standard errors.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_93mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_93mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_92mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_93mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_usefocus = 0;
  PyObject *__pyx_v_usestddev = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_usefocus,&__pyx_n_s_usestddev,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefocus);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 304, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usestddev);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 304, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkScatter") < 0)) __PYX_ERR(24, 304, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_usefocus = values[0];
    __pyx_v_usestddev = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 304, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_92mkScatter(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_usefocus, __pyx_v_usestddev);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_92mkScatter(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_usestddev) {
  YODA::Scatter3D __pyx_v_s3;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  bool __pyx_t_2;
  bool __pyx_t_3;
  YODA::Scatter3D __pyx_t_4;
  YODA::Scatter3D *__pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Profile2D.pyx":308
 *         Convert this Profile2D to a Scatter3D, with z representing
 *         mean bin y values and their standard errors."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Profile2D(deref(self.p2ptr()), usefocus, usestddev)             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 308, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_usefocus); if (unlikely((__pyx_t_2 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 308, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_usestddev); if (unlikely((__pyx_t_3 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(24, 308, __pyx_L1_error)
  try {
    __pyx_t_4 = YODA::mkScatter((*__pyx_t_1), __pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 308, __pyx_L1_error)
  }
  __pyx_v_s3 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4);

  /* "include/Profile2D.pyx":309
 *         mean bin y values and their standard errors."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Profile2D(deref(self.p2ptr()), usefocus, usestddev)
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())             # <<<<<<<<<<<<<<
 * 
 *     def divideBy(self, Profile2D h):
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_5 = __pyx_v_s3.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 309, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":304
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Profile2D to a Scatter3D, with z representing
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":311
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Profile2D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_95divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_94divideBy, "Profile2D.divideBy(self, Profile2D h)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_95divideBy = {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_95divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_94divideBy};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_95divideBy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_h = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divideBy (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_h,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_h)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 311, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divideBy") < 0)) __PYX_ERR(24, 311, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile2D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divideBy", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 311, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_h), __pyx_ptype_4yoda_4core_Profile2D, 1, "h", 0))) __PYX_ERR(24, 311, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_94divideBy(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_h);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_94divideBy(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_h) {
  YODA::Scatter3D __pyx_v_s;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  YODA::Profile2D *__pyx_t_2;
  YODA::Scatter3D __pyx_t_3;
  YODA::Scatter3D *__pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divideBy", 0);

  /* "include/Profile2D.pyx":312
 * 
 *     def divideBy(self, Profile2D h):
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 312, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_h); if (unlikely(__pyx_t_2 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 312, __pyx_L1_error)
  try {
    __pyx_t_3 = divide((*__pyx_t_1), (*__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 312, __pyx_L1_error)
  }
  __pyx_v_s = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

  /* "include/Profile2D.pyx":313
 *     def divideBy(self, Profile2D h):
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_4 = __pyx_v_s.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 313, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":311
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Profile2D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.divideBy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":316
 * 
 * 
 *     def __iadd__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_97__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_97__iadd__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iadd__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 316, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_96__iadd__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_96__iadd__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  YODA::Profile2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iadd__", 0);

  /* "include/Profile2D.pyx":317
 * 
 *     def __iadd__(Profile2D self, Profile2D other):
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())             # <<<<<<<<<<<<<<
 *         return self
 *     def __isub__(Profile2D self, Profile2D other):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 317, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 317, __pyx_L1_error)
  cython_iadd(__pyx_t_1, __pyx_t_2);

  /* "include/Profile2D.pyx":318
 *     def __iadd__(Profile2D self, Profile2D other):
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self             # <<<<<<<<<<<<<<
 *     def __isub__(Profile2D self, Profile2D other):
 *         c.Profile2D_isub_Profile2D(self.p2ptr(), other.p2ptr())
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":316
 * 
 * 
 *     def __iadd__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__iadd__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":319
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 *     def __isub__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         c.Profile2D_isub_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_99__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_99__isub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__isub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 319, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_98__isub__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_98__isub__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Profile2D *__pyx_t_1;
  YODA::Profile2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__isub__", 0);

  /* "include/Profile2D.pyx":320
 *         return self
 *     def __isub__(Profile2D self, Profile2D other):
 *         c.Profile2D_isub_Profile2D(self.p2ptr(), other.p2ptr())             # <<<<<<<<<<<<<<
 *         return self
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 320, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 320, __pyx_L1_error)
  cython_isub(__pyx_t_1, __pyx_t_2);

  /* "include/Profile2D.pyx":321
 *     def __isub__(Profile2D self, Profile2D other):
 *         c.Profile2D_isub_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __add__(Profile2D self, Profile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":319
 *         c.Profile2D_iadd_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 *     def __isub__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         c.Profile2D_isub_Profile2D(self.p2ptr(), other.p2ptr())
 *         return self
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__isub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":323
 *         return self
 * 
 *     def __add__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_101__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_101__add__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__add__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 323, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_100__add__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_100__add__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Profile2D *__pyx_t_2;
  YODA::Profile2D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__add__", 0);

  /* "include/Profile2D.pyx":324
 * 
 *     def __add__(Profile2D self, Profile2D other):
 *         h = Profile2D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Profile2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 324, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":325
 *     def __add__(Profile2D self, Profile2D other):
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))             # <<<<<<<<<<<<<<
 *         return h
 *     def __sub__(Profile2D self, Profile2D other):
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 325, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 325, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_add(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":326
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h             # <<<<<<<<<<<<<<
 *     def __sub__(Profile2D self, Profile2D other):
 *         h = Profile2D()
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":323
 *         return self
 * 
 *     def __add__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile2D.__add__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":327
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h
 *     def __sub__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_sub_Profile2D(self.p2ptr(), other.p2ptr()))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_103__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_103__sub__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__sub__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 327, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_102__sub__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_102__sub__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_h = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  YODA::Profile2D *__pyx_t_2;
  YODA::Profile2D *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__sub__", 0);

  /* "include/Profile2D.pyx":328
 *         return h
 *     def __sub__(Profile2D self, Profile2D other):
 *         h = Profile2D()             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(h, c.Profile2D_sub_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h
 */
  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4yoda_4core_Profile2D)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_h = ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":329
 *     def __sub__(Profile2D self, Profile2D other):
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_sub_Profile2D(self.p2ptr(), other.p2ptr()))             # <<<<<<<<<<<<<<
 *         return h
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 329, __pyx_L1_error)
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_other); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 329, __pyx_L1_error)
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_h), cython_sub(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":330
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_sub_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h             # <<<<<<<<<<<<<<
 * 
 *     def __div__(Profile2D self, Profile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_h);
  __pyx_r = ((PyObject *)__pyx_v_h);
  goto __pyx_L0;

  /* "include/Profile2D.pyx":327
 *         cutil.set_owned_ptr(h, c.Profile2D_add_Profile2D(self.p2ptr(), other.p2ptr()))
 *         return h
 *     def __sub__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         h = Profile2D()
 *         cutil.set_owned_ptr(h, c.Profile2D_sub_Profile2D(self.p2ptr(), other.p2ptr()))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Profile2D.__sub__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_h);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":332
 *         return h
 * 
 *     def __div__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_105__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_105__div__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__div__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 332, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_104__div__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static PyObject *__pyx_pf_4yoda_4core_9Profile2D_104__div__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__div__", 0);

  /* "include/Profile2D.pyx":333
 * 
 *     def __div__(Profile2D self, Profile2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 *     def __truediv__(Profile2D self, Profile2D other):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":332
 *         return h
 * 
 *     def __div__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
#endif /*!(#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000))*/

/* "include/Profile2D.pyx":335
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_107__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_107__truediv__(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__truediv__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Profile2D, 1, "other", 0))) __PYX_ERR(24, 335, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_106__truediv__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_other));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_106__truediv__(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_other) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__truediv__", 0);

  /* "include/Profile2D.pyx":336
 * 
 *     def __truediv__(Profile2D self, Profile2D other):
 *         return self.divideBy(other)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_other)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 336, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":335
 *         return self.divideBy(other)
 * 
 *     def __truediv__(Profile2D self, Profile2D other):             # <<<<<<<<<<<<<<
 *         return self.divideBy(other)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.__truediv__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":343
 *     #     return [b.sumW() for b in self.bins()]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_109_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_108_mknp, "Profile2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_109_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_109_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_108_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_109_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 343, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(24, 343, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(24, 343, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_108_mknp(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_108_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Profile2D.pyx":344
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Profile2D.pyx":345
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 345, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Profile2D.pyx":346
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 346, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 346, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Profile2D.pyx":344
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Profile2D.pyx":347
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Profile2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(24, 347, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Profile2D.pyx":348
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Profile2D.pyx":344
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Profile2D.pyx":343
 *     #     return [b.sumW() for b in self.bins()]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":353
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.p2ptr().xEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_111xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_110xEdges, "Profile2D.xEdges(self)\nUnique x edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_111xEdges = {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_111xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_110xEdges};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_111xEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_110xEdges(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_110xEdges(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xEdges", 0);

  /* "include/Profile2D.pyx":355
 *     def xEdges(self):
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.p2ptr().xEdges())             # <<<<<<<<<<<<<<
 * 
 *     def xWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 355, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 355, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 355, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":353
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.p2ptr().xEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D.xEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":357
 *         return self._mknp(self.p2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p2ptr().xWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_113xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_112xWidths, "Profile2D.xWidths(self)\nAll x widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_113xWidths = {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_113xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_112xWidths};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_113xWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_112xWidths(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_112xWidths(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xWidths", 0);

  /* "include/Profile2D.pyx":359
 *     def xWidths(self):
 *         """All x widths of the histo."""
 *         return self._mknp(self.p2ptr().xWidths())             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 359, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->xWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 359, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 359, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":357
 *         return self._mknp(self.p2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p2ptr().xWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D.xWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":361
 *         return self._mknp(self.p2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_115xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_114xMin, "Profile2D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_115xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_115xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_114xMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_115xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_114xMin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_114xMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Profile2D.pyx":363
 *     def xMin(self):
 *         """Lowest x value."""
 *         return self.xEdges()[0]             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 363, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":361
 *         return self._mknp(self.p2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":365
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_117xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_116xMax, "Profile2D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_117xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_117xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_116xMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_117xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_116xMax(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_116xMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Profile2D.pyx":367
 *     def xMax(self):
 *         """Highest x value."""
 *         return self.xEdges()[-1]             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 367, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":365
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":369
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_119xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_118xMins, "Profile2D.xMins(self, unique=True, asgrid=False)\nUnique/all x low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_119xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_119xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_118xMins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_119xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 369, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 369, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMins") < 0)) __PYX_ERR(24, 369, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 369, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_118xMins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_118xMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Profile2D.pyx":371
 *     def xMins(self, unique=True, asgrid=False):
 *         """Unique/all x low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[:-1]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 371, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":372
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 372, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 372, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":371
 *     def xMins(self, unique=True, asgrid=False):
 *         """Unique/all x low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[:-1]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":374
 *             rtn = self.xEdges()[:-1]
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 374, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 374, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 374, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 374, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 374, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 374, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 374, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 374, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 374, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 374, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":375
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 375, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":376
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 376, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 376, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":375
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":377
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":369
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":379
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_121xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_120xMaxs, "Profile2D.xMaxs(self, unique=True, asgrid=False)\nUnique/all x high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_121xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_121xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_120xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_121xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 379, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 379, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMaxs") < 0)) __PYX_ERR(24, 379, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 379, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_120xMaxs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_120xMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Profile2D.pyx":381
 *     def xMaxs(self, unique=True, asgrid=False):
 *         """Unique/all x high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[1:]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 381, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":382
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[1:]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 382, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":381
 *     def xMaxs(self, unique=True, asgrid=False):
 *         """Unique/all x high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.xEdges()[1:]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":384
 *             rtn = self.xEdges()[1:]
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 384, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 384, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 384, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 384, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 384, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 384, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 384, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 384, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 384, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":385
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 385, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":386
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 386, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":385
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":387
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xMids(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":379
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":389
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_123xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_122xMids, "Profile2D.xMids(self, unique=True, asgrid=False)\nUnique/all x bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_123xMids = {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_123xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_122xMids};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_123xMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMids (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 389, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 389, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xMids") < 0)) __PYX_ERR(24, 389, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xMids", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 389, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_122xMids(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_122xMids(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMids", 0);

  /* "include/Profile2D.pyx":391
 *     def xMids(self, unique=True, asgrid=False):
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 391, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":392
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 *             rtn = (self.xMins() + self.xMaxs())/ 2.             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 392, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyFloat_DivideObjC(__pyx_t_4, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":391
 *     def xMids(self, unique=True, asgrid=False):
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":394
 *             rtn = (self.xMins() + self.xMaxs())/ 2.
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 394, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 394, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 394, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 394, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 394, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 394, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 394, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 394, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 394, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":395
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 395, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":396
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 396, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 396, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 396, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 396, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":395
 *         else:
 *             rtn = self._mknp([b.xMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":397
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":389
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.xMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":403
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_125xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_124xFoci, "Profile2D.xFoci(self, asgrid=False)\nAll x bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_125xFoci = {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_125xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_124xFoci};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_125xFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xFoci (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 403, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xFoci") < 0)) __PYX_ERR(24, 403, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xFoci", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 403, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_124xFoci(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_124xFoci(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xFoci", 0);

  /* "include/Profile2D.pyx":405
 *     def xFoci(self, asgrid=False):
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 405, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 405, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 405, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 405, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 405, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 405, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":406
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 406, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":407
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 407, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 407, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":406
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":408
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":403
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.xFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":410
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_127xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_126xVals, "Profile2D.xVals(self, foci=False, asgrid=False)\nAll x values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_127xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_127xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_126xVals};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_127xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 410, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 410, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xVals") < 0)) __PYX_ERR(24, 410, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xVals", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 410, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_126xVals(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_126xVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Profile2D.pyx":412
 *     def xVals(self, foci=False, asgrid=False):
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(24, 412, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 412, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, Py_False, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 412, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":410
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":414
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_129xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_128xErrs, "Profile2D.xErrs(self, foci=False, asgrid=False)\nAll x errors of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_129xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_129xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_128xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_129xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 414, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 414, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xErrs") < 0)) __PYX_ERR(24, 414, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 414, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_128xErrs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_128xErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Profile2D.pyx":417
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 417, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":418
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 418, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 418, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 418, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 418, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 418, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 418, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 418, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(24, 418, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/Profile2D.pyx":417
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":420
 *             rtn = [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 420, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 420, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 420, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 420, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_xMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 420, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":421
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 421, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":422
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 422, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_reshape, __pyx_v_rtn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Profile2D.pyx":421
 *         else:
 *             rtn = [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":423
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":414
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":428
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.p2ptr().yEdges())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_131yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_130yEdges, "Profile2D.yEdges(self)\nUnique y edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_131yEdges = {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_131yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_130yEdges};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_131yEdges(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yEdges (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yEdges", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yEdges", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_130yEdges(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_130yEdges(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yEdges", 0);

  /* "include/Profile2D.pyx":430
 *     def yEdges(self):
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.p2ptr().yEdges())             # <<<<<<<<<<<<<<
 * 
 *     def yWidths(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 430, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yEdges();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 430, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":428
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.p2ptr().yEdges())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D.yEdges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":432
 *         return self._mknp(self.p2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.p2ptr().yWidths())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_133yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_132yWidths, "Profile2D.yWidths(self)\nAll y widths of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_133yWidths = {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_133yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_132yWidths};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_133yWidths(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yWidths (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yWidths", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yWidths", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_132yWidths(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_132yWidths(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Profile2D *__pyx_t_3;
  std::vector<double>  __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yWidths", 0);

  /* "include/Profile2D.pyx":434
 *     def yWidths(self):
 *         """All y widths of the histo."""
 *         return self._mknp(self.p2ptr().yWidths())             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Profile2D_p2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Profile2D *)NULL))) __PYX_ERR(24, 434, __pyx_L1_error)
  try {
    __pyx_t_4 = __pyx_t_3->yWidths();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(24, 434, __pyx_L1_error)
  }
  __pyx_t_5 = __pyx_convert_vector_to_py_double(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 434, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":432
 *         return self._mknp(self.p2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.p2ptr().yWidths())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Profile2D.yWidths", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":436
 *         return self._mknp(self.p2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_135yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_134yMin, "Profile2D.yMin(self)\nLowest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_135yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_135yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_134yMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_135yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_134yMin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_134yMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Profile2D.pyx":438
 *     def yMin(self):
 *         """Lowest y value."""
 *         return self.yEdges()[0]             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 438, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 438, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":436
 *         return self._mknp(self.p2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":440
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_137yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_136yMax, "Profile2D.yMax(self)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_137yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_137yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_136yMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_137yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_136yMax(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_136yMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Profile2D.pyx":442
 *     def yMax(self):
 *         """Highest y value."""
 *         return self.yEdges()[-1]             # <<<<<<<<<<<<<<
 * 
 *     def yMins(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 442, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":440
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":444
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_139yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_138yMins, "Profile2D.yMins(self, unique=True, asgrid=False)\nUnique/all y low edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_139yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_139yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_138yMins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_139yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 444, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 444, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMins") < 0)) __PYX_ERR(24, 444, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 444, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_138yMins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_138yMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Profile2D.pyx":446
 *     def yMins(self, unique=True, asgrid=False):
 *         """Unique/all y low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[:-1]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 446, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":447
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 *             rtn = self.yEdges()[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":446
 *     def yMins(self, unique=True, asgrid=False):
 *         """Unique/all y low edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[:-1]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":449
 *             rtn = self.yEdges()[:-1]
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 449, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 449, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 449, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 449, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 449, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 449, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 449, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 449, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":450
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 450, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":451
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":450
 *         else:
 *             rtn = self._mknp([b.yMin() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":452
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":444
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":454
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_141yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_140yMaxs, "Profile2D.yMaxs(self, unique=True, asgrid=False)\nUnique/all y high edges of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_141yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_141yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_140yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_141yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 454, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 454, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMaxs") < 0)) __PYX_ERR(24, 454, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 454, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_140yMaxs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_140yMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Profile2D.pyx":456
 *     def yMaxs(self, unique=True, asgrid=False):
 *         """Unique/all y high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[1:]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 456, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":457
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 *             rtn = self.yEdges()[1:]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yEdges); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 457, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_2, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":456
 *     def yMaxs(self, unique=True, asgrid=False):
 *         """Unique/all y high edges of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = self.yEdges()[1:]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":459
 *             rtn = self.yEdges()[1:]
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 459, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 459, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 459, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 459, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 459, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 459, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 459, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 459, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 459, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":460
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 460, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":461
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_4, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 461, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":460
 *         else:
 *             rtn = self._mknp([b.yMax() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":462
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yMids(self, unique=True, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":454
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":464
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_143yMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_142yMids, "Profile2D.yMids(self, unique=True, asgrid=False)\nUnique/all y bin midpoints of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_143yMids = {"yMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_143yMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_142yMids};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_143yMids(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_unique = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMids (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_unique,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_True);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unique);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 464, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 464, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yMids") < 0)) __PYX_ERR(24, 464, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_unique = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yMids", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 464, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_142yMids(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_unique, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_142yMids(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_unique, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMids", 0);

  /* "include/Profile2D.pyx":466
 *     def yMids(self, unique=True, asgrid=False):
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_unique); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 466, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":467
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 *             rtn = (self.yMins() + self.yMaxs())/ 2.             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 467, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyFloat_DivideObjC(__pyx_t_4, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":466
 *     def yMids(self, unique=True, asgrid=False):
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:             # <<<<<<<<<<<<<<
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":469
 *             rtn = (self.yMins() + self.yMaxs())/ 2.
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 469, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_7 = __pyx_t_6; __Pyx_INCREF(__pyx_t_7); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
    } else {
      __pyx_t_9 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 469, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 469, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (likely(!__pyx_t_10)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 469, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 469, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        } else {
          if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_9); __Pyx_INCREF(__pyx_t_6); __pyx_t_9++; if (unlikely((0 < 0))) __PYX_ERR(24, 469, __pyx_L1_error)
          #else
          __pyx_t_6 = PySequence_ITEM(__pyx_t_7, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 469, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          #endif
        }
      } else {
        __pyx_t_6 = __pyx_t_10(__pyx_t_7);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 469, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 469, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 469, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 469, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 469, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_v_rtn = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":470
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 470, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":471
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_8, };
      __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_7)) __PYX_ERR(24, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_2, __pyx_t_7};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 2+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Profile2D.pyx":470
 *         else:
 *             rtn = self._mknp([b.yMid() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":472
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":464
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.yMids", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":478
 *     # Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_145yFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_144yFoci, "Profile2D.yFoci(self, asgrid=False)\nAll y bin foci of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_145yFoci = {"yFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_145yFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_144yFoci};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_145yFoci(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yFoci (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 478, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yFoci") < 0)) __PYX_ERR(24, 478, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yFoci", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 478, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_144yFoci(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_144yFoci(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yFoci", 0);

  /* "include/Profile2D.pyx":480
 *     def yFoci(self, asgrid=False):
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 480, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 480, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 480, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 480, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 480, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 480, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 480, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":481
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 481, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":482
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 482, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 482, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 482, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 482, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":481
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":483
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def yVals(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":478
 *     # Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.yFoci", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":485
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_147yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_146yVals, "Profile2D.yVals(self, foci=False, asgrid=False)\nAll y values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_147yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_147yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_146yVals};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_147yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 485, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 485, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yVals") < 0)) __PYX_ERR(24, 485, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yVals", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 485, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_146yVals(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_146yVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Profile2D.pyx":487
 *     def yVals(self, foci=False, asgrid=False):
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self, foci=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(24, 487, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yFoci); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 487, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMids); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 487, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, Py_False, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 487, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":485
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":489
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_149yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_148yErrs, "Profile2D.yErrs(self, foci=False, asgrid=False)\nAll y errors of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_149yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_149yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_148yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_149yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_foci = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_foci,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_foci);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 489, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 489, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yErrs") < 0)) __PYX_ERR(24, 489, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_foci = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 489, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_148yErrs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_foci, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_148yErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_foci, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Profile2D.pyx":492
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_foci); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 492, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":493
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 */
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 493, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_4))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 493, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_7); __Pyx_INCREF(__pyx_t_3); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 493, __pyx_L1_error)
          #else
          __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          #endif
        }
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_4);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 493, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 493, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_10 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_10, };
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 493, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yFocus); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_10 = PyNumber_Subtract(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_10);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_10);
      __pyx_t_9 = 0;
      __pyx_t_10 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_3))) __PYX_ERR(24, 493, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/Profile2D.pyx":492
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 *         if foci:             # <<<<<<<<<<<<<<
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 */
    goto __pyx_L3;
  }

  /* "include/Profile2D.pyx":495
 *             rtn = [(b.yFocus()-b.yMin(), b.yMax()-b.yFocus()) for b in self.bins()]
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  /*else*/ {
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 495, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_10 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 495, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_3))) {
          if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 495, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        } else {
          if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 495, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
        }
      } else {
        __pyx_t_4 = __pyx_t_8(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else __PYX_ERR(24, 495, __pyx_L1_error)
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_9 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_10);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_10, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_9, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMin); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_9);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_9, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 495, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __pyx_t_9 = PyNumber_Subtract(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMax); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_5, };
        __pyx_t_10 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 495, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_yMid); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_11)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_11);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_6 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_11, };
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_t_5 = PyNumber_Subtract(__pyx_t_10, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
      __pyx_t_9 = 0;
      __pyx_t_5 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 495, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_rtn = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_L3:;

  /* "include/Profile2D.pyx":496
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(24, 496, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/Profile2D.pyx":497
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 497, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 497, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyList_Type_reshape, __pyx_v_rtn, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 497, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Profile2D.pyx":496
 *         else:
 *             rtn = [(b.yMid()-b.yMin(), b.yMax()-b.yMid()) for b in self.bins()]
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":498
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def sumWs(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":489
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":500
 *         return rtn
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_151sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_150sumWs, "Profile2D.sumWs(self, asgrid=False)\nAll sumW values of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_151sumWs = {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_151sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_150sumWs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_151sumWs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sumWs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 500, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "sumWs") < 0)) __PYX_ERR(24, 500, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("sumWs", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 500, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_150sumWs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_150sumWs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("sumWs", 0);

  /* "include/Profile2D.pyx":502
 *     def sumWs(self, asgrid=False):
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 502, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 502, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 502, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 502, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 502, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 502, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 502, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_sumW); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 502, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":503
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 503, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":504
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":503
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":505
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zMeans(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":500
 *         return rtn
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.sumWs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":507
 *         return rtn
 * 
 *     def zMeans(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_153zMeans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_152zMeans, "Profile2D.zMeans(self, asgrid=False)\nAll y heights of the histo.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_153zMeans = {"zMeans", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_153zMeans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_152zMeans};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_153zMeans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMeans (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 507, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMeans") < 0)) __PYX_ERR(24, 507, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMeans", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 507, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zMeans", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_152zMeans(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_152zMeans(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMeans", 0);

  /* "include/Profile2D.pyx":509
 *     def zMeans(self, asgrid=False):
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 509, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 509, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 509, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 509, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 509, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 509, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_height); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 509, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 509, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":510
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 510, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":511
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 511, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 511, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 511, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 511, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":510
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":512
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zVals(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":507
 *         return rtn
 * 
 *     def zMeans(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.zMeans", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":514
 *         return rtn
 * 
 *     def zVals(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zMeans(asgrid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_155zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_154zVals, "Profile2D.zVals(self, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_155zVals = {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_155zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_154zVals};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_155zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVals (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 514, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zVals") < 0)) __PYX_ERR(24, 514, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zVals", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 514, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_154zVals(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_154zVals(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zVals", 0);

  /* "include/Profile2D.pyx":515
 * 
 *     def zVals(self, asgrid=False):
 *         return self.zMeans(asgrid)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMeans); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_asgrid};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 515, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":514
 *         return rtn
 * 
 *     def zVals(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zMeans(asgrid)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":518
 * 
 * 
 *     def zStdErrs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_157zStdErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_156zStdErrs, "Profile2D.zStdErrs(self, asgrid=False)\nAll standard errors on the z means.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_157zStdErrs = {"zStdErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_157zStdErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_156zStdErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_157zStdErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 518, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zStdErrs") < 0)) __PYX_ERR(24, 518, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zStdErrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 518, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zStdErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_156zStdErrs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_156zStdErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zStdErrs", 0);

  /* "include/Profile2D.pyx":520
 *     def zStdErrs(self, asgrid=False):
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 520, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 520, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 520, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 520, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 520, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_zStdErr); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":521
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 521, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":522
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 522, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":521
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":523
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zStdDevs(self, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":518
 * 
 * 
 *     def zStdErrs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.zStdErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":525
 *         return rtn
 * 
 *     def zStdDevs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_159zStdDevs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_158zStdDevs, "Profile2D.zStdDevs(self, asgrid=False)\nAll standard deviations on the z means.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_159zStdDevs = {"zStdDevs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_159zStdDevs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_158zStdDevs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_159zStdDevs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zStdDevs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asgrid,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 525, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zStdDevs") < 0)) __PYX_ERR(24, 525, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_asgrid = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zStdDevs", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 525, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zStdDevs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_158zStdDevs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_158zStdDevs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_b = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zStdDevs", 0);

  /* "include/Profile2D.pyx":527
 *     def zStdDevs(self, asgrid=False):
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bins); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 527, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 527, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 527, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(24, 527, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 527, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 527, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_b, __pyx_n_s_zStdDev); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 527, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(24, 527, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 527, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":528
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(24, 528, __pyx_L1_error)
  if (__pyx_t_11) {

    /* "include/Profile2D.pyx":529
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 529, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_4 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 529, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":528
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":530
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zErrs(self, sd=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":525
 *         return rtn
 * 
 *     def zStdDevs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Profile2D.zStdDevs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":532
 *         return rtn
 * 
 *     def zErrs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zStdDevs(asgrid) if sd else self.zStdErrs(asgrid)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_161zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_160zErrs, "Profile2D.zErrs(self, sd=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_161zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_161zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_160zErrs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_161zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 532, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 532, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zErrs") < 0)) __PYX_ERR(24, 532, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zErrs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 532, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_160zErrs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_sd, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_160zErrs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 0);

  /* "include/Profile2D.pyx":533
 * 
 *     def zErrs(self, sd=False, asgrid=False):
 *         return self.zStdDevs(asgrid) if sd else self.zStdErrs(asgrid)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_sd); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(24, 533, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zStdDevs); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 533, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zStdErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(24, 533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_asgrid};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 533, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":532
 *         return rtn
 * 
 *     def zErrs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zStdDevs(asgrid) if sd else self.zStdErrs(asgrid)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Profile2D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":536
 * 
 * 
 *     def zMins(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_163zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_162zMins, "Profile2D.zMins(self, sd=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_163zMins = {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_163zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_162zMins};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_163zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMins (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 536, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 536, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMins") < 0)) __PYX_ERR(24, 536, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMins", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 536, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_162zMins(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_sd, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_162zMins(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_zs = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_z = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMins", 0);

  /* "include/Profile2D.pyx":537
 * 
 *     def zMins(self, sd=False, asgrid=False):
 *         zs = self.zVals()             # <<<<<<<<<<<<<<
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_zs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":538
 *     def zMins(self, sd=False, asgrid=False):
 *         zs = self.zVals()
 *         es = self.zErrs(sd)             # <<<<<<<<<<<<<<
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 538, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 538, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":539
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_zs);
  __Pyx_GIVEREF(__pyx_v_zs);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_zs);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 539, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 539, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 539, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 539, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 539, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(24, 539, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(24, 539, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(24, 539, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_z, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Subtract(__pyx_v_z, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 539, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":540
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(24, 540, __pyx_L1_error)
  if (__pyx_t_13) {

    /* "include/Profile2D.pyx":541
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 541, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":540
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z-e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":542
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zMaxs(self, sd=False, asgrid=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":536
 * 
 * 
 *     def zMins(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_zs);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_z);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":544
 *         return rtn
 * 
 *     def zMaxs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_165zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_164zMaxs, "Profile2D.zMaxs(self, sd=False, asgrid=False)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_165zMaxs = {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_165zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_164zMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_165zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  PyObject *__pyx_v_asgrid = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMaxs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,&__pyx_n_s_asgrid,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)Py_False);
    values[1] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 544, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asgrid);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 544, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMaxs") < 0)) __PYX_ERR(24, 544, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
    __pyx_v_asgrid = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMaxs", 0, 0, 2, __pyx_nargs); __PYX_ERR(24, 544, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_164zMaxs(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_sd, __pyx_v_asgrid);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_164zMaxs(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd, PyObject *__pyx_v_asgrid) {
  PyObject *__pyx_v_zs = NULL;
  PyObject *__pyx_v_es = NULL;
  PyObject *__pyx_v_rtn = NULL;
  PyObject *__pyx_v_z = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMaxs", 0);

  /* "include/Profile2D.pyx":545
 * 
 *     def zMaxs(self, sd=False, asgrid=False):
 *         zs = self.zVals()             # <<<<<<<<<<<<<<
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zVals); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 545, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_zs = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":546
 *     def zMaxs(self, sd=False, asgrid=False):
 *         zs = self.zVals()
 *         es = self.zErrs(sd)             # <<<<<<<<<<<<<<
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zErrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_es = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":547
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])             # <<<<<<<<<<<<<<
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_INCREF(__pyx_v_zs);
  __Pyx_GIVEREF(__pyx_v_zs);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_zs);
  __Pyx_INCREF(__pyx_v_es);
  __Pyx_GIVEREF(__pyx_v_es);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_es);
  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 547, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
    __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(24, 547, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  for (;;) {
    if (likely(!__pyx_t_8)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 547, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 547, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      } else {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely((0 < 0))) __PYX_ERR(24, 547, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 547, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
      }
    } else {
      __pyx_t_6 = __pyx_t_8(__pyx_t_5);
      if (unlikely(!__pyx_t_6)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(24, 547, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_6);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
      PyObject* sequence = __pyx_t_6;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(24, 547, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_9 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_10 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_10);
      #else
      __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(24, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(24, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      #endif
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(24, 547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
      index = 0; __pyx_t_9 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_9)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_10);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(24, 547, __pyx_L1_error)
      __pyx_t_12 = NULL;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_12 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(24, 547, __pyx_L1_error)
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_z, __pyx_t_9);
    __pyx_t_9 = 0;
    __Pyx_XDECREF_SET(__pyx_v_e, __pyx_t_10);
    __pyx_t_10 = 0;
    __pyx_t_6 = PyNumber_Add(__pyx_v_z, __pyx_v_e); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(24, 547, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_rtn = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Profile2D.pyx":548
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  __pyx_t_13 = __Pyx_PyObject_IsTrue(__pyx_v_asgrid); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(24, 548, __pyx_L1_error)
  if (__pyx_t_13) {

    /* "include/Profile2D.pyx":549
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())             # <<<<<<<<<<<<<<
 *         return rtn
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rtn, __pyx_n_s_reshape); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsX); if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_5, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_6, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(24, 549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numBinsY); if (unlikely(!__pyx_t_6)) __PYX_ERR(24, 549, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(24, 549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_6)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_6, __pyx_t_3, __pyx_t_5};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_rtn, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Profile2D.pyx":548
 *         es = self.zErrs(sd)
 *         rtn = self._mknp([z+e for (z,e) in zip(zs,es)])
 *         if asgrid:             # <<<<<<<<<<<<<<
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn
 */
  }

  /* "include/Profile2D.pyx":550
 *         if asgrid:
 *             rtn = rtn.reshape(self.numBinsX(), self.numBinsY())
 *         return rtn             # <<<<<<<<<<<<<<
 * 
 *     def zMin(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_rtn);
  __pyx_r = __pyx_v_rtn;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":544
 *         return rtn
 * 
 *     def zMaxs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.Profile2D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_zs);
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_rtn);
  __Pyx_XDECREF(__pyx_v_z);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":552
 *         return rtn
 * 
 *     def zMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(sd))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_167zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_166zMin, "Profile2D.zMin(self, sd=False)\nLowest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_167zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_167zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_166zMin};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_167zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 552, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMin") < 0)) __PYX_ERR(24, 552, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMin", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 552, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_166zMin(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_166zMin(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 0);

  /* "include/Profile2D.pyx":554
 *     def zMin(self, sd=False):
 *         """Lowest z value."""
 *         return min(self.zMins(sd))             # <<<<<<<<<<<<<<
 * 
 *     def zMax(self, sd=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 554, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":552
 *         return rtn
 * 
 *     def zMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(sd))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Profile2D.pyx":556
 *         return min(self.zMins(sd))
 * 
 *     def zMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(sd))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_169zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_168zMax, "Profile2D.zMax(self, sd=False)\nHighest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_169zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_169zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_168zMax};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_169zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sd = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sd,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sd);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(24, 556, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zMax") < 0)) __PYX_ERR(24, 556, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_sd = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zMax", 0, 0, 1, __pyx_nargs); __PYX_ERR(24, 556, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_168zMax(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v_sd);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_168zMax(struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, PyObject *__pyx_v_sd) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 0);

  /* "include/Profile2D.pyx":558
 *     def zMax(self, sd=False):
 *         """Highest z value."""
 *         return max(self.zMaxs(sd))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_sd};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(24, 558, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Profile2D.pyx":556
 *         return min(self.zMins(sd))
 * 
 *     def zMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(sd))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Profile2D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_171__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_170__reduce_cython__, "Profile2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_171__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_171__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_170__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_171__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_170__reduce_cython__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_170__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_173__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Profile2D_172__setstate_cython__, "Profile2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Profile2D_173__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_173__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_172__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Profile2D_173__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Profile2D_172__setstate_cython__(((struct __pyx_obj_4yoda_4core_Profile2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Profile2D_172__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Profile2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Profile2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":7
 *     """
 * 
 *     cdef c.Point* pptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point*> self.ptr()
 * 
 */

static YODA::Point *__pyx_f_4yoda_4core_5Point_pptr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  YODA::Point *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pptr", 0);

  /* "include/Point.pyx":8
 * 
 *     cdef c.Point* pptr(self) except NULL:
 *         return <c.Point*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(25, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Point *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Point.pyx":7
 *     """
 * 
 *     cdef c.Point* pptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.pptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":10
 *         return <c.Point*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Point *p = self.pptr()
 *         if self._deallocate:
 */

/* Python wrapper */
static void __pyx_pw_4yoda_4core_5Point_1__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_4yoda_4core_5Point_1__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_4yoda_4core_5Point___dealloc__(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_4yoda_4core_5Point___dealloc__(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  YODA::Point *__pyx_v_p;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "include/Point.pyx":11
 * 
 *     def __dealloc__(self):
 *         cdef c.Point *p = self.pptr()             # <<<<<<<<<<<<<<
 *         if self._deallocate:
 *             del p
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 11, __pyx_L1_error)
  __pyx_v_p = __pyx_t_1;

  /* "include/Point.pyx":12
 *     def __dealloc__(self):
 *         cdef c.Point *p = self.pptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  if (__pyx_v_self->__pyx_base._deallocate) {

    /* "include/Point.pyx":13
 *         cdef c.Point *p = self.pptr()
 *         if self._deallocate:
 *             del p             # <<<<<<<<<<<<<<
 * 
 *     # def __init__(self):
 */
    delete __pyx_v_p;

    /* "include/Point.pyx":12
 *     def __dealloc__(self):
 *         cdef c.Point *p = self.pptr()
 *         if self._deallocate:             # <<<<<<<<<<<<<<
 *             del p
 * 
 */
  }

  /* "include/Point.pyx":10
 *         return <c.Point*> self.ptr()
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cdef c.Point *p = self.pptr()
 *         if self._deallocate:
 */

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_WriteUnraisable("yoda.core.Point.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "include/Point.pyx":25
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_3dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_2dim, "Point.dim(self)\nNone -> int\n\n        Space dimension of the point (should match containing Scatter)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_3dim = {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_3dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_2dim};
static PyObject *__pyx_pw_4yoda_4core_5Point_3dim(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dim (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("dim", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "dim", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_2dim(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_2dim(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dim", 0);

  /* "include/Point.pyx":29
 * 
 *         Space dimension of the point (should match containing Scatter)"""
 *         return self.pptr().dim()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 29, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->dim();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 29, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":25
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point.dim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":32
 * 
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """int -> float
 *         Value on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_5val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_4val, "Point.val(self, i)\nint -> float\n        Value on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_5val = {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_5val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_4val};
static PyObject *__pyx_pw_4yoda_4core_5Point_5val(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("val (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 32, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "val") < 0)) __PYX_ERR(25, 32, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("val", 1, 1, 1, __pyx_nargs); __PYX_ERR(25, 32, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_4val(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_4val(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("val", 0);

  /* "include/Point.pyx":35
 *         """int -> float
 *         Value on axis i"""
 *         return self.pptr().val(i)             # <<<<<<<<<<<<<<
 * 
 *     def setVal(self, i, val):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 35, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 35, __pyx_L1_error)
  try {
    __pyx_t_3 = __pyx_t_1->val(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 35, __pyx_L1_error)
  }
  __pyx_t_4 = PyFloat_FromDouble(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":32
 * 
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """int -> float
 *         Value on axis i"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point.val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":37
 *         return self.pptr().val(i)
 * 
 *     def setVal(self, i, val):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_7setVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_6setVal, "Point.setVal(self, i, val)\n(int, float) -> None\n\n        Value on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_7setVal = {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_7setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_6setVal};
static PyObject *__pyx_pw_4yoda_4core_5Point_7setVal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_val = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setVal (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_val,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 37, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 37, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setVal", 1, 2, 2, 1); __PYX_ERR(25, 37, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setVal") < 0)) __PYX_ERR(25, 37, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_val = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setVal", 1, 2, 2, __pyx_nargs); __PYX_ERR(25, 37, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.setVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_6setVal(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_6setVal(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setVal", 0);

  /* "include/Point.pyx":41
 * 
 *         Value on axis i"""
 *         self.pptr().setVal(i, val)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 41, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 41, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 41, __pyx_L1_error)
  try {
    __pyx_t_1->setVal(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 41, __pyx_L1_error)
  }

  /* "include/Point.pyx":37
 *         return self.pptr().val(i)
 * 
 *     def setVal(self, i, val):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.setVal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":44
 * 
 * 
 *     def errs(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_9errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_8errs, "Point.errs(self, i, source='')\nint, string -> float\n\n        Errors on axis i. Optional string argument allows to\n        access a particular named uncertainty source from the\n        breakdown.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_9errs = {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_9errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_8errs};
static PyObject *__pyx_pw_4yoda_4core_5Point_9errs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 44, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 44, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "errs") < 0)) __PYX_ERR(25, 44, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errs", 0, 1, 2, __pyx_nargs); __PYX_ERR(25, 44, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_8errs(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_8errs(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  YODA::Point *__pyx_t_5;
  size_t __pyx_t_6;
  std::string __pyx_t_7;
  std::pair<double,double>  __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errs", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":51
 *         breakdown.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         return util.read_error_pair(self.pptr().errs(i,source))
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":52
 *         """
 *         if source is None: source = ""
 *         return util.read_error_pair(self.pptr().errs(i,source))             # <<<<<<<<<<<<<<
 * 
 *     def setErr(self, i, e, source=""):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_util); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Point *)NULL))) __PYX_ERR(25, 52, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 52, __pyx_L1_error)
  __pyx_t_7 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 52, __pyx_L1_error)
  try {
    __pyx_t_8 = __pyx_t_5->errs(__pyx_t_6, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_7));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 52, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_pair_to_py_double____double(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_9 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_9)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_3};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 52, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":44
 * 
 * 
 *     def errs(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Point.errs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":54
 *         return util.read_error_pair(self.pptr().errs(i,source))
 * 
 *     def setErr(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_11setErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_10setErr, "Point.setErr(self, i, e, source='')\n(int, float, string) -> None\n\n        Set symmetric errors on axis i, with optional string argument\n        to specify which named uncertainty source from the breakdown to\n        change. By default, the total uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_11setErr = {"setErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_11setErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_10setErr};
static PyObject *__pyx_pw_4yoda_4core_5Point_11setErr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_e = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,&__pyx_n_s_source,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 54, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_e)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 54, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErr", 0, 2, 3, 1); __PYX_ERR(25, 54, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 54, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setErr") < 0)) __PYX_ERR(25, 54, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_e = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErr", 0, 2, 3, __pyx_nargs); __PYX_ERR(25, 54, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_10setErr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_10setErr(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setErr", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":61
 *         change. By default, the total uncertainty is changed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         self.pptr().setErr(i, e, source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":62
 *         """
 *         if source is None: source = ""
 *         self.pptr().setErr(i, e, source)             # <<<<<<<<<<<<<<
 * 
 *     def setErrs(self, i, *es):
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 62, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 62, __pyx_L1_error)
  try {
    __pyx_t_2->setErr(__pyx_t_3, __pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 62, __pyx_L1_error)
  }

  /* "include/Point.pyx":54
 *         return util.read_error_pair(self.pptr().errs(i,source))
 * 
 *     def setErr(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":64
 *         self.pptr().setErr(i, e, source)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_13setErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_12setErrs, "Point.setErrs(self, i, *es)\n\n        (int, float) -> None\n        (int, [float, float]) -> None\n        (int, float, float) -> None\n        (int, float, string) -> None\n        (int, [float, float], string) -> None\n        (int, float, float, string) -> None\n\n        Set asymmetric errors on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to change. By default, the total\n        uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_13setErrs = {"setErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_13setErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_12setErrs};
static PyObject *__pyx_pw_4yoda_4core_5Point_13setErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_es = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrs (wrapper)", 0);
  __pyx_v_es = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 1, __pyx_nargs);
  if (unlikely(!__pyx_v_es)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_es);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        default:
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 64, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        const Py_ssize_t used_pos_args = (kwd_pos_args < 1) ? kwd_pos_args : 1;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, used_pos_args, "setErrs") < 0)) __PYX_ERR(25, 64, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs < 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrs", 0, 1, 1, __pyx_nargs); __PYX_ERR(25, 64, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_es); __pyx_v_es = 0;
  __Pyx_AddTraceback("yoda.core.Point.setErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_12setErrs(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_12setErrs(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_source = NULL;
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  YODA::Point *__pyx_t_12;
  size_t __pyx_t_13;
  std::pair<double,double>  __pyx_t_14;
  std::string __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setErrs", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Point.pyx":79
 *         uncertainty is changed.
 *         """
 *         source=None             # <<<<<<<<<<<<<<
 *         es=list(es)
 *         if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Point.pyx":80
 *         """
 *         source=None
 *         es=list(es)             # <<<<<<<<<<<<<<
 *         if type(es[-1]) is str:
 *             source=es[-1]
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Point.pyx":81
 *         source=None
 *         es=list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source=es[-1]
 *             es=es[:-1]
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_t_1)) == ((PyObject *)(&PyString_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/Point.pyx":82
 *         es=list(es)
 *         if type(es[-1]) is str:
 *             source=es[-1]             # <<<<<<<<<<<<<<
 *             es=es[:-1]
 *         else:
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point.pyx":83
 *         if type(es[-1]) is str:
 *             source=es[-1]
 *             es=es[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             try:
 */
    __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point.pyx":81
 *         source=None
 *         es=list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source=es[-1]
 *             es=es[:-1]
 */
    goto __pyx_L3;
  }

  /* "include/Point.pyx":85
 *             es=es[:-1]
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 source = es[-1]
 *                 es=es[:-1]
 */
  /*else*/ {
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_3);
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      /*try:*/ {

        /* "include/Point.pyx":86
 *         else:
 *             try:
 *                 source = es[-1]             # <<<<<<<<<<<<<<
 *                 es=es[:-1]
 *             except:
 */
        __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 86, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "include/Point.pyx":87
 *             try:
 *                 source = es[-1]
 *                 es=es[:-1]             # <<<<<<<<<<<<<<
 *             except:
 *                 pass
 */
        __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 87, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
        __pyx_t_1 = 0;

        /* "include/Point.pyx":85
 *             es=es[:-1]
 *         else:
 *             try:             # <<<<<<<<<<<<<<
 *                 source = es[-1]
 *                 es=es[:-1]
 */
      }
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L9_try_end;
      __pyx_L4_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point.pyx":88
 *                 source = es[-1]
 *                 es=es[:-1]
 *             except:             # <<<<<<<<<<<<<<
 *                 pass
 *         errs = es
 */
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L5_exception_handled;
      }
      __pyx_L5_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_3);
      __Pyx_XGIVEREF(__pyx_t_4);
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_ExceptionReset(__pyx_t_3, __pyx_t_4, __pyx_t_5);
      __pyx_L9_try_end:;
    }
  }
  __pyx_L3:;

  /* "include/Point.pyx":90
 *             except:
 *                 pass
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None: source=""
 *         if len(errs) == 1:
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point.pyx":91
 *                 pass
 *         errs = es
 *         if source is None: source=""             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":92
 *         errs = es
 *         if source is None: source=""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0], source)
 */
  __pyx_t_6 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(25, 92, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_6 == 1);
  if (__pyx_t_2) {

    /* "include/Point.pyx":93
 *         if source is None: source=""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(i,errs[0], source)
 *                 return
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(25, 93, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (!__pyx_t_2);
    if (__pyx_t_7) {

      /* "include/Point.pyx":94
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0], source)             # <<<<<<<<<<<<<<
 *                 return
 *             errs=errs[0]
 */
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_8)) __PYX_ERR(25, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(25, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = NULL;
      __pyx_t_11 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_11 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_10, __pyx_v_i, __pyx_t_9, __pyx_v_source};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_11, 3+__pyx_t_11);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 94, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point.pyx":95
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0], source)
 *                 return             # <<<<<<<<<<<<<<
 *             errs=errs[0]
 *         # assert len(errs) == 2:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Point.pyx":93
 *         if source is None: source=""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(i,errs[0], source)
 *                 return
 */
    }

    /* "include/Point.pyx":96
 *                 self.setErr(i,errs[0], source)
 *                 return
 *             errs=errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(i, tuple(errs), source)
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point.pyx":92
 *         errs = es
 *         if source is None: source=""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(i,errs[0], source)
 */
  }

  /* "include/Point.pyx":98
 *             errs=errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(i, tuple(errs), source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_12 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Point *)NULL))) __PYX_ERR(25, 98, __pyx_L1_error)
  __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 98, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_14 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_15 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 98, __pyx_L1_error)
  try {
    __pyx_t_12->setErrs(__pyx_t_13, __pyx_t_14, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_15));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 98, __pyx_L1_error)
  }

  /* "include/Point.pyx":64
 *         self.pptr().setErr(i, e, source)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Point.setErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":101
 * 
 * 
 *     def errMinus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_15errMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_14errMinus, "Point.errMinus(self, i, source='')\nint, string -> float\n\n        Minus error on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to change. By default, the total\n        uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_15errMinus = {"errMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_15errMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_14errMinus};
static PyObject *__pyx_pw_4yoda_4core_5Point_15errMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errMinus (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 101, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 101, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "errMinus") < 0)) __PYX_ERR(25, 101, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errMinus", 0, 1, 2, __pyx_nargs); __PYX_ERR(25, 101, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.errMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_14errMinus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_14errMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  std::string __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errMinus", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":110
 *         uncertainty is changed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         return self.pptr().errMinus(i ,source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":111
 *         """
 *         if source is None: source = ""
 *         return self.pptr().errMinus(i ,source)             # <<<<<<<<<<<<<<
 * 
 *     def setErrMinus(self, i, e, source=""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 111, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 111, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 111, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_2->errMinus(__pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 111, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":101
 * 
 * 
 *     def errMinus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point.errMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":113
 *         return self.pptr().errMinus(i ,source)
 * 
 *     def setErrMinus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_17setErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_16setErrMinus, "Point.setErrMinus(self, i, e, source='')\n(int, float, string) -> None\n\n        Set minus error on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to change. By default, the total\n        uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_17setErrMinus = {"setErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_17setErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_16setErrMinus};
static PyObject *__pyx_pw_4yoda_4core_5Point_17setErrMinus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_e = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrMinus (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,&__pyx_n_s_source,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 113, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_e)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 113, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErrMinus", 0, 2, 3, 1); __PYX_ERR(25, 113, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 113, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setErrMinus") < 0)) __PYX_ERR(25, 113, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_e = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrMinus", 0, 2, 3, __pyx_nargs); __PYX_ERR(25, 113, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_16setErrMinus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_16setErrMinus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setErrMinus", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":122
 *         uncertainty is changed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         self.pptr().setErrMinus(i, e, source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":123
 *         """
 *         if source is None: source = ""
 *         self.pptr().setErrMinus(i, e, source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 123, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 123, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 123, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 123, __pyx_L1_error)
  try {
    __pyx_t_2->setErrMinus(__pyx_t_3, __pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 123, __pyx_L1_error)
  }

  /* "include/Point.pyx":113
 *         return self.pptr().errMinus(i ,source)
 * 
 *     def setErrMinus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErrMinus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":126
 * 
 * 
 *     def errPlus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_19errPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_18errPlus, "Point.errPlus(self, i, source='')\nint, string -> float\n\n        Plus error on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to access. By default, the total\n        uncertainty is accessed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_19errPlus = {"errPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_19errPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_18errPlus};
static PyObject *__pyx_pw_4yoda_4core_5Point_19errPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errPlus (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 126, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 126, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "errPlus") < 0)) __PYX_ERR(25, 126, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errPlus", 0, 1, 2, __pyx_nargs); __PYX_ERR(25, 126, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.errPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_18errPlus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_18errPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  std::string __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errPlus", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":135
 *         uncertainty is accessed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         return self.pptr().errPlus(i, source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":136
 *         """
 *         if source is None: source = ""
 *         return self.pptr().errPlus(i, source)             # <<<<<<<<<<<<<<
 * 
 *     def setErrPlus(self, i, e, source=""):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 136, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 136, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 136, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_2->errPlus(__pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 136, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":126
 * 
 * 
 *     def errPlus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point.errPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":138
 *         return self.pptr().errPlus(i, source)
 * 
 *     def setErrPlus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_21setErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_20setErrPlus, "Point.setErrPlus(self, i, e, source='')\n(int, float, string) -> None\n\n        Set plus error on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to change. By default, the total\n        uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_21setErrPlus = {"setErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_21setErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_20setErrPlus};
static PyObject *__pyx_pw_4yoda_4core_5Point_21setErrPlus(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_e = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setErrPlus (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_e,&__pyx_n_s_source,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 138, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_e)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 138, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setErrPlus", 0, 2, 3, 1); __PYX_ERR(25, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setErrPlus") < 0)) __PYX_ERR(25, 138, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_e = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setErrPlus", 0, 2, 3, __pyx_nargs); __PYX_ERR(25, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_20setErrPlus(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_e, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_20setErrPlus(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_e, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  double __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setErrPlus", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":147
 *         uncertainty is changed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         self.pptr().setErrPlus(i, e, source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":148
 *         """
 *         if source is None: source = ""
 *         self.pptr().setErrPlus(i, e, source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 148, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_e); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 148, __pyx_L1_error)
  try {
    __pyx_t_2->setErrPlus(__pyx_t_3, __pyx_t_4, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 148, __pyx_L1_error)
  }

  /* "include/Point.pyx":138
 *         return self.pptr().errPlus(i, source)
 * 
 *     def setErrPlus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.setErrPlus", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":151
 * 
 * 
 *     def errAvg(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int -> float
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_23errAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_22errAvg, "Point.errAvg(self, i, source='')\nint -> float\n\n        Average error on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to access. By default, the total\n        uncertainty is accessed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_23errAvg = {"errAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_23errAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_22errAvg};
static PyObject *__pyx_pw_4yoda_4core_5Point_23errAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errAvg (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 151, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 151, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "errAvg") < 0)) __PYX_ERR(25, 151, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_i = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("errAvg", 0, 1, 2, __pyx_nargs); __PYX_ERR(25, 151, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.errAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_22errAvg(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_22errAvg(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point *__pyx_t_2;
  size_t __pyx_t_3;
  std::string __pyx_t_4;
  double __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errAvg", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":160
 *         uncertainty is accessed.
 *         """
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         return self.pptr().errAvg(i, source)
 * 
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":161
 *         """
 *         if source is None: source = ""
 *         return self.pptr().errAvg(i, source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point *)NULL))) __PYX_ERR(25, 161, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_3 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 161, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 161, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_2->errAvg(__pyx_t_3, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 161, __pyx_L1_error)
  }
  __pyx_t_6 = PyFloat_FromDouble(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":151
 * 
 * 
 *     def errAvg(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int -> float
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point.errAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":164
 * 
 * 
 *     def set(self, i, val, *es, source=""):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float, float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_25set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_24set, "Point.set(self, i, val, *es, source='')\n\n        (int, float, float) -> None\n        (int, float, [float, float]) -> None\n        (int, float, float, float) -> None\n        (int, float, float, string) -> None\n        (int, float, [float, float],string) -> None\n        (int, float, float, float,string) -> None\n\n        Set value and errors on axis i.\n\n        Optional string argument to specify which named uncertainty\n        source from the breakdown to change. By default, the total\n        uncertainty is changed.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_25set = {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_25set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_24set};
static PyObject *__pyx_pw_4yoda_4core_5Point_25set(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_es = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set (wrapper)", 0);
  __pyx_v_es = __Pyx_ArgsSlice_FASTCALL(__pyx_args, 2, __pyx_nargs);
  if (unlikely(!__pyx_v_es)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_v_es);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_val,&__pyx_n_s_source,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        default:
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 164, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 164, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("set", 0, 2, 2, 1); __PYX_ERR(25, 164, __pyx_L3_error)
        }
      }
      if (kw_args == 1) {
        const Py_ssize_t index = 2;
        PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, *__pyx_pyargnames[index]);
        if (value) { values[index] = value; kw_args--; }
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 164, __pyx_L3_error)
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        const Py_ssize_t used_pos_args = (kwd_pos_args < 2) ? kwd_pos_args : 2;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, used_pos_args, "set") < 0)) __PYX_ERR(25, 164, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs < 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_val = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set", 0, 2, 2, __pyx_nargs); __PYX_ERR(25, 164, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_es); __pyx_v_es = 0;
  __Pyx_AddTraceback("yoda.core.Point.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_24set(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_val, __pyx_v_source, __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_24set(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_val, PyObject *__pyx_v_source, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  YODA::Point *__pyx_t_6;
  size_t __pyx_t_7;
  double __pyx_t_8;
  std::pair<double,double>  __pyx_t_9;
  std::string __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point.pyx":179
 *         uncertainty is changed.
 *         """
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None: source = ""
 *         if len(es) == 1:
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point.pyx":180
 *         """
 *         errs = es
 *         if source is None: source = ""             # <<<<<<<<<<<<<<
 *         if len(es) == 1:
 *             if hasattr(es[0], "__iter__"):
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point.pyx":181
 *         errs = es
 *         if source is None: source = ""
 *         if len(es) == 1:             # <<<<<<<<<<<<<<
 *             if hasattr(es[0], "__iter__"):
 *                 errs = [es[0], es[0]]
 */
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_v_es); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(25, 181, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 == 1);
  if (__pyx_t_1) {

    /* "include/Point.pyx":182
 *         if source is None: source = ""
 *         if len(es) == 1:
 *             if hasattr(es[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 errs = [es[0], es[0]]
 *             else:
 */
    __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_es, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_HasAttr(__pyx_t_3, __pyx_n_s_iter); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(25, 182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "include/Point.pyx":183
 *         if len(es) == 1:
 *             if hasattr(es[0], "__iter__"):
 *                 errs = [es[0], es[0]]             # <<<<<<<<<<<<<<
 *             else:
 *                 errs = es[0]
 */
      __pyx_t_3 = __Pyx_GetItemInt_Tuple(__pyx_v_es, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_GetItemInt_Tuple(__pyx_v_es, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyList_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_3);
      PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyList_SET_ITEM(__pyx_t_5, 1, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "include/Point.pyx":182
 *         if source is None: source = ""
 *         if len(es) == 1:
 *             if hasattr(es[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 errs = [es[0], es[0]]
 *             else:
 */
      goto __pyx_L5;
    }

    /* "include/Point.pyx":185
 *                 errs = [es[0], es[0]]
 *             else:
 *                 errs = es[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().set(i, val, errs, source)
 */
    /*else*/ {
      __pyx_t_5 = __Pyx_GetItemInt_Tuple(__pyx_v_es, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 185, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_5);
      __pyx_t_5 = 0;
    }
    __pyx_L5:;

    /* "include/Point.pyx":181
 *         errs = es
 *         if source is None: source = ""
 *         if len(es) == 1:             # <<<<<<<<<<<<<<
 *             if hasattr(es[0], "__iter__"):
 *                 errs = [es[0], es[0]]
 */
  }

  /* "include/Point.pyx":187
 *                 errs = es[0]
 *         # assert len(errs) == 2:
 *         self.pptr().set(i, val, errs, source)             # <<<<<<<<<<<<<<
 * 
 *     def errMap(self):
 */
  __pyx_t_6 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Point *)NULL))) __PYX_ERR(25, 187, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_7 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 187, __pyx_L1_error)
  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 187, __pyx_L1_error)
  __pyx_t_9 = __pyx_convert_pair_from_py_double__and_double(__pyx_v_errs); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 187, __pyx_L1_error)
  __pyx_t_10 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 187, __pyx_L1_error)
  try {
    __pyx_t_6->set(__pyx_t_7, __pyx_t_8, __pyx_t_9, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_10));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 187, __pyx_L1_error)
  }

  /* "include/Point.pyx":164
 * 
 * 
 *     def set(self, i, val, *es, source=""):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float, float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":189
 *         self.pptr().set(i, val, errs, source)
 * 
 *     def errMap(self):             # <<<<<<<<<<<<<<
 *         """None -> {string: [float,float]}
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_27errMap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_26errMap, "Point.errMap(self)\nNone -> {string: [float,float]}\n\n        Error map of this point\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_27errMap = {"errMap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_27errMap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_26errMap};
static PyObject *__pyx_pw_4yoda_4core_5Point_27errMap(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("errMap (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("errMap", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "errMap", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_26errMap(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_5Point_6errMap_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/Point.pyx":195
 *         """
 *         err_map = self.pptr().errMap()
 *         err_map = dict((k, v) for k, v in err_map.items())             # <<<<<<<<<<<<<<
 *         return err_map
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_5Point_6errMap_genexpr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_4_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(25, 195, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_5Point_6errMap_2generator3, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_errMap_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(25, 195, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.errMap.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_5Point_6errMap_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(25, 195, __pyx_L1_error)
  __pyx_r = PyDict_New(); if (unlikely(!__pyx_r)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_r);
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(25, 195, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(25, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 195, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(25, 195, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 195, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(25, 195, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 195, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(25, 195, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
      PyObject* sequence = __pyx_t_4;
      Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        __PYX_ERR(25, 195, __pyx_L1_error)
      }
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      #else
      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(25, 195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(25, 195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      #endif
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(25, 195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_7);
      index = 0; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_5);
      index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
      __pyx_t_8 = NULL;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      __PYX_ERR(25, 195, __pyx_L1_error)
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_k);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_k, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_v);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_v, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    if (unlikely(PyDict_SetItem(__pyx_r, (PyObject*)__pyx_cur_scope->__pyx_v_k, (PyObject*)__pyx_cur_scope->__pyx_v_v))) __PYX_ERR(25, 195, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":189
 *         self.pptr().set(i, val, errs, source)
 * 
 *     def errMap(self):             # <<<<<<<<<<<<<<
 *         """None -> {string: [float,float]}
 * 
 */

static PyObject *__pyx_pf_4yoda_4core_5Point_26errMap(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  PyObject *__pyx_v_err_map = NULL;
  PyObject *__pyx_gb_4yoda_4core_5Point_6errMap_2generator3 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  __pyx_t_4yoda_12declarations_errMap __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("errMap", 0);

  /* "include/Point.pyx":194
 *         Error map of this point
 *         """
 *         err_map = self.pptr().errMap()             # <<<<<<<<<<<<<<
 *         err_map = dict((k, v) for k, v in err_map.items())
 *         return err_map
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 194, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->errMap();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 194, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_convert_map_to_py_std_3a__3a_string____std_3a__3a_pair_3c_double_2c_double_3e___(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_err_map = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/Point.pyx":195
 *         """
 *         err_map = self.pptr().errMap()
 *         err_map = dict((k, v) for k, v in err_map.items())             # <<<<<<<<<<<<<<
 *         return err_map
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_err_map, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 195, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_4 = __pyx_pf_4yoda_4core_5Point_6errMap_genexpr(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF_SET(__pyx_v_err_map, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Point.pyx":196
 *         err_map = self.pptr().errMap()
 *         err_map = dict((k, v) for k, v in err_map.items())
 *         return err_map             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_err_map);
  __pyx_r = __pyx_v_err_map;
  goto __pyx_L0;

  /* "include/Point.pyx":189
 *         self.pptr().set(i, val, errs, source)
 * 
 *     def errMap(self):             # <<<<<<<<<<<<<<
 *         """None -> {string: [float,float]}
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point.errMap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_err_map);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_5Point_6errMap_2generator3);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":199
 * 
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_29rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_28rmVariations, "Point.rmVariations(self)\nNone -> None\n\n        Remove variations in the error map of this point\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_29rmVariations = {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_29rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_28rmVariations};
static PyObject *__pyx_pw_4yoda_4core_5Point_29rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_28rmVariations(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_28rmVariations(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmVariations", 0);

  /* "include/Point.pyx":204
 *         Remove variations in the error map of this point
 *         """
 *         return self.pptr().rmVariations()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 204, __pyx_L1_error)
  try {
    __pyx_t_1->rmVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 204, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point.pyx":199
 * 
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point.rmVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point.pyx":207
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_31scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_30scale, "Point.scale(self, i, scale)\n(int, float) -> None\n\n        Scale values on axis i\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_31scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_31scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_30scale};
static PyObject *__pyx_pw_4yoda_4core_5Point_31scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_scale = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 207, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(25, 207, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(25, 207, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scale") < 0)) __PYX_ERR(25, 207, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_scale = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(25, 207, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_30scale(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_30scale(struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 0);

  /* "include/Point.pyx":212
 *         Scale values on axis i
 *         """
 *         self.pptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point *)__pyx_v_self->__pyx_base.__pyx_vtab)->pptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point *)NULL))) __PYX_ERR(25, 212, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(25, 212, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(25, 212, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(25, 212, __pyx_L1_error)
  }

  /* "include/Point.pyx":207
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_32__reduce_cython__, "Point.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_33__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_32__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Point_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_32__reduce_cython__(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Point_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Point_34__setstate_cython__, "Point.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Point_35__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_34__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_5Point_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Point_34__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Point_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":7
 *     """
 * 
 *     cdef c.Point1D* p1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point1D*> self.ptr()
 * 
 */

static YODA::Point1D *__pyx_f_4yoda_4core_7Point1D_p1ptr(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  YODA::Point1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("p1ptr", 0);

  /* "include/Point1D.pyx":8
 * 
 *     cdef c.Point1D* p1ptr(self) except NULL:
 *         return <c.Point1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(26, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Point1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Point1D.pyx":7
 *     """
 * 
 *     cdef c.Point1D* p1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.p1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, xerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Point1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Point1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_xerrs = 0;
  PyObject *__pyx_v_source = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xerrs,&__pyx_n_s_source,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)__pyx_int_0);
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 11, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(26, 11, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_xerrs = values[1];
    __pyx_v_source = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, __pyx_nargs); __PYX_ERR(26, 11, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D___init__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_x, __pyx_v_xerrs, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Point1D___init__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_source) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point1D.pyx":12
 * 
 *     def __init__(self, x=0, xerrs=0, source=""):
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         cutil.set_owned_ptr(self, new c.Point1D())
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {

    /* "include/Point1D.pyx":13
 *     def __init__(self, x=0, xerrs=0, source=""):
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point1D())
 *         self.setX(x)
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point1D.pyx":12
 * 
 *     def __init__(self, x=0, xerrs=0, source=""):
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         cutil.set_owned_ptr(self, new c.Point1D())
 */
  }

  /* "include/Point1D.pyx":14
 *         if source is None:
 *             source = ""
 *         cutil.set_owned_ptr(self, new c.Point1D())             # <<<<<<<<<<<<<<
 *         self.setX(x)
 *         self.setXErrs(xerrs, source)
 */
  try {
    __pyx_t_2 = new YODA::Point1D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 14, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point1D.pyx":15
 *             source = ""
 *         cutil.set_owned_ptr(self, new c.Point1D())
 *         self.setX(x)             # <<<<<<<<<<<<<<
 *         self.setXErrs(xerrs, source)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setX); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_x};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point1D.pyx":16
 *         cutil.set_owned_ptr(self, new c.Point1D())
 *         self.setX(x)
 *         self.setXErrs(xerrs, source)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setXErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_xerrs, __pyx_v_source};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point1D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, xerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":18
 *         self.setXErrs(xerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_2copy, "Point1D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_3copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_2copy};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_2copy(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_2copy(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Point1D.pyx":19
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))             # <<<<<<<<<<<<<<
 * 
 *     # TODO: add clone() as mapping to (not yet existing) C++ newclone()?
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 19, __pyx_L1_error)
  try {
    __pyx_t_2 = new YODA::Point1D((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 19, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":18
 *         self.setXErrs(xerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":24
 * 
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_5setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_4setXErrs, "Point1D.setXErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n        (float, string) -> None\n        ([float, float], string) -> None\n        (float, float, string) -> None\n\n        Set asymmetric errors on x-axis with an optional string argument to\n        specify which named source of uncertainty in the error breakdown should\n        be set. By default, if no source is provided, the total uncertainty is set.\n\n        TODO: simplify, this is too much for the Python wrapper\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_5setXErrs = {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_5setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_4setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_5setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setXErrs", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_4setXErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_4setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_source = NULL;
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  YODA::Point *__pyx_t_9;
  std::pair<double,double>  __pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Point1D.pyx":39
 *         TODO: simplify, this is too much for the Python wrapper
 *         """
 *         source = None             # <<<<<<<<<<<<<<
 *         es = list(es)
 *         if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Point1D.pyx":40
 *         """
 *         source = None
 *         es = list(es)             # <<<<<<<<<<<<<<
 *         if type(es[-1]) is str:
 *             source = es[-1]
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Point1D.pyx":41
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_t_1)) == ((PyObject *)(&PyString_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":42
 *         es = list(es)
 *         if type(es[-1]) is str:
 *             source = es[-1]             # <<<<<<<<<<<<<<
 *             es = es[:-1]
 *         errs = es
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":43
 *         if type(es[-1]) is str:
 *             source = es[-1]
 *             es = es[:-1]             # <<<<<<<<<<<<<<
 *         errs = es
 *         if source is None:
 */
    __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 43, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":41
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  }

  /* "include/Point1D.pyx":44
 *             source = es[-1]
 *             es = es[:-1]
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point1D.pyx":45
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":46
 *         errs = es
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point1D.pyx":45
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  }

  /* "include/Point1D.pyx":47
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(26, 47, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":48
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 *                 return
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 48, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 48, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Point1D.pyx":49
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?             # <<<<<<<<<<<<<<
 *                 return
 *             errs = errs[0]
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(26, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_int_1, __pyx_t_6, __pyx_v_source};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 49, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point1D.pyx":50
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 *                 return             # <<<<<<<<<<<<<<
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Point1D.pyx":48
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 *                 return
 */
    }

    /* "include/Point1D.pyx":51
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(1, tuple(errs), source)
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 51, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":47
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1, errs[0], source) #< duplicate of last line?
 */
  }

  /* "include/Point1D.pyx":53
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(1, tuple(errs), source)             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, val, source):
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.pptr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((YODA::Point *)NULL))) __PYX_ERR(26, 53, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 53, __pyx_L1_error)
  try {
    __pyx_t_9->setErrs(1, __pyx_t_10, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 53, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":24
 * 
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point1D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":55
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setXErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_7setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_6setXErrs, "Point1D.setXErrs(self, val, source)\n(float, string) -> None\n\n        Set symmetric errors on x-axis with an optional string argument to\n        specify which named source of uncertainty in the error breakdown should\n        be set. By default, if no source is provided, the total uncertainty is set");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_7setXErrs = {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_7setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_6setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_7setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 55, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setXErrs", 1, 2, 2, 1); __PYX_ERR(26, 55, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setXErrs") < 0)) __PYX_ERR(26, 55, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_val = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setXErrs", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 55, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_6setXErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_val, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_6setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  std::pair<double,double>  __pyx_t_7;
  std::string __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point1D.pyx":61
 *         specify which named source of uncertainty in the error breakdown should
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val), source)
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {

    /* "include/Point1D.pyx":62
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         self.p1ptr().setXErrs(util.read_symmetric(val), source)
 * 
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point1D.pyx":61
 *         specify which named source of uncertainty in the error breakdown should
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val), source)
 */
  }

  /* "include/Point1D.pyx":63
 *         if source is None:
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val), source)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 63, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_util); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_val};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 63, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_7 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 63, __pyx_L1_error)
  try {
    __pyx_t_2->setXErrs(__pyx_t_7, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 63, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":55
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setXErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point1D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":80
 *     #         self.p1ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_9x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_8x, "Point1D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_9x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_9x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_8x};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_9x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("x", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "x", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_8x(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_8x(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("x", 0);

  /* "include/Point1D.pyx":82
 *     def x(self):
 *         """The x value"""
 *         return self.p1ptr().x()             # <<<<<<<<<<<<<<
 *     def setX(self, x):
 *         """Set the x value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 82, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->x();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 82, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":80
 *     #         self.p1ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.x", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":83
 *         """The x value"""
 *         return self.p1ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_11setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_10setX, "Point1D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_11setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_11setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_10setX};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_11setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setX") < 0)) __PYX_ERR(26, 83, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 83, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_10setX(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_10setX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setX", 0);

  /* "include/Point1D.pyx":85
 *     def setX(self, x):
 *         """Set the x value"""
 *         self.p1ptr().setX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 85, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 85, __pyx_L1_error)
  try {
    __pyx_t_1->setX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 85, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":83
 *         """The x value"""
 *         return self.p1ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":87
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_13xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_12xErrs, "Point1D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_13xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_13xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_12xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_13xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_12xErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_12xErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point1D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Point1D.pyx":89
 *     def xErrs(self):
 *         """The x errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     def xErrsFromSource(self, source):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 89, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 89, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":87
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point1D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":91
 *         return util.read_error_pair(self.p1ptr().xErrs())
 * 
 *     def xErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_15xErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_14xErrsFromSource, "Point1D.xErrsFromSource(self, source)\nThe y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_15xErrsFromSource = {"xErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_15xErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_14xErrsFromSource};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_15xErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrsFromSource (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 91, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "xErrsFromSource") < 0)) __PYX_ERR(26, 91, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_source = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("xErrsFromSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 91, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.xErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_14xErrsFromSource(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_14xErrsFromSource(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point1D *__pyx_t_4;
  std::string __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrsFromSource", 0);

  /* "include/Point1D.pyx":93
 *     def xErrsFromSource(self, source):
 *         """The y errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs(source))             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, *es):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 93, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 93, __pyx_L1_error)
  try {
    __pyx_t_6 = __pyx_t_4->xErrs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 93, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":91
 *         return util.read_error_pair(self.p1ptr().xErrs())
 * 
 *     def xErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point1D.xErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":95
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *            (int, [float, float]) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_17setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_16setXErrs, "Point1D.setXErrs(self, *es)\n(int, float) -> None\n           (int, [float, float]) -> None\n           (int, float, float) -> None\n\n        Set asymmetric errors on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_17setXErrs = {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_17setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_16setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_17setXErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setXErrs", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_16setXErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_16setXErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_source = NULL;
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  YODA::Point *__pyx_t_9;
  std::pair<double,double>  __pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Point1D.pyx":101
 * 
 *         Set asymmetric errors on axis i"""
 *         source = None             # <<<<<<<<<<<<<<
 *         es = list(es)
 *         if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Point1D.pyx":102
 *         Set asymmetric errors on axis i"""
 *         source = None
 *         es = list(es)             # <<<<<<<<<<<<<<
 *         if type(es[-1]) is str:
 *             source = es[-1]
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Point1D.pyx":103
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_t_1)) == ((PyObject *)(&PyString_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":104
 *         es = list(es)
 *         if type(es[-1]) is str:
 *             source = es[-1]             # <<<<<<<<<<<<<<
 *             es = es[:-1]
 *         else:
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 104, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":105
 *         if type(es[-1]) is str:
 *             source = es[-1]
 *             es = es[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             pass
 */
    __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":103
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
    goto __pyx_L3;
  }

  /* "include/Point1D.pyx":107
 *             es = es[:-1]
 *         else:
 *             pass             # <<<<<<<<<<<<<<
 *         errs = es
 *         if source is None:
 */
  /*else*/ {
  }
  __pyx_L3:;

  /* "include/Point1D.pyx":108
 *         else:
 *             pass
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point1D.pyx":109
 *             pass
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":110
 *         errs = es
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point1D.pyx":109
 *             pass
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  }

  /* "include/Point1D.pyx":111
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1,errs[0], source)
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(26, 111, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Point1D.pyx":112
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1,errs[0], source)
 *                 return
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(26, 112, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Point1D.pyx":113
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1,errs[0], source)             # <<<<<<<<<<<<<<
 *                 return
 *             errs = errs[0]
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(26, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_int_1, __pyx_t_6, __pyx_v_source};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 113, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point1D.pyx":114
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1,errs[0], source)
 *                 return             # <<<<<<<<<<<<<<
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Point1D.pyx":112
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(1,errs[0], source)
 *                 return
 */
    }

    /* "include/Point1D.pyx":115
 *                 self.setErr(1,errs[0], source)
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(1, tuple(errs), source)
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point1D.pyx":111
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(1,errs[0], source)
 */
  }

  /* "include/Point1D.pyx":117
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(1, tuple(errs), source)             # <<<<<<<<<<<<<<
 * 
 *     def setYErrs(self, val, source):
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.pptr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((YODA::Point *)NULL))) __PYX_ERR(26, 117, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 117, __pyx_L1_error)
  try {
    __pyx_t_9->setErrs(1, __pyx_t_10, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 117, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":95
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *            (int, [float, float]) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point1D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":119
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setYErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_19setYErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_18setYErrs, "Point1D.setYErrs(self, val, source)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_19setYErrs = {"setYErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_19setYErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_18setYErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_19setYErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setYErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 119, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 119, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setYErrs", 1, 2, 2, 1); __PYX_ERR(26, 119, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setYErrs") < 0)) __PYX_ERR(26, 119, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_val = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setYErrs", 1, 2, 2, __pyx_nargs); __PYX_ERR(26, 119, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_18setYErrs(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_val, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_18setYErrs(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  std::pair<double,double>  __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setYErrs", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point1D.pyx":120
 * 
 *     def setYErrs(self, val, source):
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val))
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {

    /* "include/Point1D.pyx":121
 *     def setYErrs(self, val, source):
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         self.p1ptr().setXErrs(util.read_symmetric(val))
 * 
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point1D.pyx":120
 * 
 *     def setYErrs(self, val, source):
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val))
 */
  }

  /* "include/Point1D.pyx":122
 *         if source is None:
 *             source = ""
 *         self.p1ptr().setXErrs(util.read_symmetric(val))             # <<<<<<<<<<<<<<
 * 
 *     #@property
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 122, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_util); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_5)) __PYX_ERR(26, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_val};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_7 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  try {
    __pyx_t_2->setXErrs(__pyx_t_7);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 122, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":119
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setYErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point1D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":125
 * 
 *     #@property
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_21xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_20xMin, "Point1D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_21xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_21xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_20xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_21xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_20xMin(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_20xMin(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Point1D.pyx":127
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()             # <<<<<<<<<<<<<<
 *     #@property
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 127, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 127, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":125
 * 
 *     #@property
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":129
 *         return self.p1ptr().xMin()
 *     #@property
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_23xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_22xMax, "Point1D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_23xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_23xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_22xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_23xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_22xMax(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_22xMax(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Point1D.pyx":131
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 131, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 131, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":129
 *         return self.p1ptr().xMin()
 *     #@property
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":133
 *         return self.p1ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_25xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_24xErrAvg, "Point1D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_25xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_25xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_24xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_25xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_24xErrAvg(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_24xErrAvg(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvg", 0);

  /* "include/Point1D.pyx":134
 * 
 *     def xErrAvg(self):
 *         return self.p1ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 134, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrAvg();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 134, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":133
 *         return self.p1ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.xErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":137
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_27scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_26scaleX, "Point1D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_27scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_27scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_26scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_27scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(26, 137, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(26, 137, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(26, 137, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_26scaleX(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_26scaleX(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Point1D.pyx":140
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 *         self.p1ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 140, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(26, 140, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(26, 140, __pyx_L1_error)
  }

  /* "include/Point1D.pyx":137
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":143
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point1D(x=%g)>' % self.x()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_29__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point1D_29__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_28__repr__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_28__repr__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Point1D.pyx":144
 * 
 *     def __repr__(self):
 *         return '<Point1D(x=%g)>' % self.x()             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(26, 144, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Point1D_x_g, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point1D.pyx":143
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point1D(x=%g)>' % self.x()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point1D.pyx":146
 *         return '<Point1D(x=%g)>' % self.x()
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_31__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point1D_31__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point1D, 1, "other", 0))) __PYX_ERR(26, 146, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_30__richcmp__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_30__richcmp__(struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point1D *__pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 0);

  /* "include/Point1D.pyx":147
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 *         elif op == 1:
 */
  switch (__pyx_v_op) {
    case 0:

    /* "include/Point1D.pyx":148
 *     def __richcmp__(Point1D self, Point1D other, int op):
 *         if op == 0:
 *             return deref(self.p1ptr()) < deref(other.p1ptr())             # <<<<<<<<<<<<<<
 *         elif op == 1:
 *             return deref(self.p1ptr()) <= deref(other.p1ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 148, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 148, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) < (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 148, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 148, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":147
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 *         elif op == 1:
 */
    break;
    case 1:

    /* "include/Point1D.pyx":150
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 *         elif op == 1:
 *             return deref(self.p1ptr()) <= deref(other.p1ptr())             # <<<<<<<<<<<<<<
 *         elif op == 2:
 *             return deref(self.p1ptr()) == deref(other.p1ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 150, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 150, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) <= (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 150, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":149
 *         if op == 0:
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 *         elif op == 1:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) <= deref(other.p1ptr())
 *         elif op == 2:
 */
    break;
    case 2:

    /* "include/Point1D.pyx":152
 *             return deref(self.p1ptr()) <= deref(other.p1ptr())
 *         elif op == 2:
 *             return deref(self.p1ptr()) == deref(other.p1ptr())             # <<<<<<<<<<<<<<
 *         elif op == 3:
 *             return deref(self.p1ptr()) != deref(other.p1ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 152, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 152, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) == (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 152, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 152, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":151
 *         elif op == 1:
 *             return deref(self.p1ptr()) <= deref(other.p1ptr())
 *         elif op == 2:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) == deref(other.p1ptr())
 *         elif op == 3:
 */
    break;
    case 3:

    /* "include/Point1D.pyx":154
 *             return deref(self.p1ptr()) == deref(other.p1ptr())
 *         elif op == 3:
 *             return deref(self.p1ptr()) != deref(other.p1ptr())             # <<<<<<<<<<<<<<
 *         elif op == 4:
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 154, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 154, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) != (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 154, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":153
 *         elif op == 2:
 *             return deref(self.p1ptr()) == deref(other.p1ptr())
 *         elif op == 3:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) != deref(other.p1ptr())
 *         elif op == 4:
 */
    break;
    case 4:

    /* "include/Point1D.pyx":156
 *             return deref(self.p1ptr()) != deref(other.p1ptr())
 *         elif op == 4:
 *             return deref(self.p1ptr()) > deref(other.p1ptr())             # <<<<<<<<<<<<<<
 *         elif op == 5:
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 156, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 156, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) > (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 156, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":155
 *         elif op == 3:
 *             return deref(self.p1ptr()) != deref(other.p1ptr())
 *         elif op == 4:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 *         elif op == 5:
 */
    break;
    case 5:

    /* "include/Point1D.pyx":158
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 *         elif op == 5:
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 158, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point1D *)NULL))) __PYX_ERR(26, 158, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) >= (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(26, 158, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(26, 158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point1D.pyx":157
 *         elif op == 4:
 *             return deref(self.p1ptr()) > deref(other.p1ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p1ptr()) >= deref(other.p1ptr())
 */
    break;
    default: break;
  }

  /* "include/Point1D.pyx":146
 *         return '<Point1D(x=%g)>' % self.x()
 * 
 *     def __richcmp__(Point1D self, Point1D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p1ptr()) < deref(other.p1ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point1D.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_32__reduce_cython__, "Point1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_33__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_32__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_32__reduce_cython__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point1D_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point1D_34__setstate_cython__, "Point1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point1D_35__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_34__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point1D_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point1D_34__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point1D_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":7
 *     """
 * 
 *     cdef c.Point2D* p2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point2D*> self.ptr()
 * 
 */

static YODA::Point2D *__pyx_f_4yoda_4core_7Point2D_p2ptr(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  YODA::Point2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("p2ptr", 0);

  /* "include/Point2D.pyx":8
 * 
 *     cdef c.Point2D* p2ptr(self) except NULL:
 *         return <c.Point2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(27, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Point2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Point2D.pyx":7
 *     """
 * 
 *     cdef c.Point2D* p2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.p2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, y=0, xerrs=0, yerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point2D())
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Point2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Point2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_xerrs = 0;
  PyObject *__pyx_v_yerrs = 0;
  PyObject *__pyx_v_source = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_xerrs,&__pyx_n_s_yerrs,&__pyx_n_s_source,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[0] = ((PyObject *)__pyx_int_0);
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)__pyx_int_0);
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yerrs);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 11, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(27, 11, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_xerrs = values[2];
    __pyx_v_yerrs = values[3];
    __pyx_v_source = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 5, __pyx_nargs); __PYX_ERR(27, 11, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D___init__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_xerrs, __pyx_v_yerrs, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Point2D___init__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_source) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  YODA::Point2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point2D.pyx":12
 * 
 *     def __init__(self, x=0, y=0, xerrs=0, yerrs=0, source=""):
 *         if source==None: source=""             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point2D())
 *         self.setX(x)
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_source, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 12, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(27, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point2D.pyx":13
 *     def __init__(self, x=0, y=0, xerrs=0, yerrs=0, source=""):
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point2D())             # <<<<<<<<<<<<<<
 *         self.setX(x)
 *         self.setY(y)
 */
  try {
    __pyx_t_3 = new YODA::Point2D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 13, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point2D.pyx":14
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point2D())
 *         self.setX(x)             # <<<<<<<<<<<<<<
 *         self.setY(y)
 *         self.setXErrs(xerrs)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setX); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_x};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 14, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point2D.pyx":15
 *         cutil.set_owned_ptr(self, new c.Point2D())
 *         self.setX(x)
 *         self.setY(y)             # <<<<<<<<<<<<<<
 *         self.setXErrs(xerrs)
 *         self.setYErrs(yerrs, source)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setY); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_y};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point2D.pyx":16
 *         self.setX(x)
 *         self.setY(y)
 *         self.setXErrs(xerrs)             # <<<<<<<<<<<<<<
 *         self.setYErrs(yerrs, source)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setXErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_xerrs};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point2D.pyx":17
 *         self.setY(y)
 *         self.setXErrs(xerrs)
 *         self.setYErrs(yerrs, source)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setYErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_yerrs, __pyx_v_source};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point2D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, y=0, xerrs=0, yerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point2D())
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":19
 *         self.setYErrs(yerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_2copy, "Point2D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_3copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_2copy};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_2copy(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_2copy(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  YODA::Point2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Point2D.pyx":20
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))             # <<<<<<<<<<<<<<
 * 
 *     # TODO: add clone() as mapping to (not yet existing) C++ newclone()?
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 20, __pyx_L1_error)
  try {
    __pyx_t_2 = new YODA::Point2D((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 20, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":19
 *         self.setYErrs(yerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":33
 *     #    #return None
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_5x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_4x, "Point2D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_5x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_5x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_4x};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_5x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("x", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "x", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_4x(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_4x(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("x", 0);

  /* "include/Point2D.pyx":35
 *     def x(self):
 *         """The x value"""
 *         return self.p2ptr().x()             # <<<<<<<<<<<<<<
 *     def setX(self, x):
 *         """Set the x value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 35, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->x();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 35, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":33
 *     #    #return None
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.x", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":36
 *         """The x value"""
 *         return self.p2ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_7setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_6setX, "Point2D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_7setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_7setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_6setX};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_7setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 36, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setX") < 0)) __PYX_ERR(27, 36, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 36, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_6setX(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_6setX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setX", 0);

  /* "include/Point2D.pyx":38
 *     def setX(self, x):
 *         """Set the x value"""
 *         self.p2ptr().setX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 38, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 38, __pyx_L1_error)
  try {
    __pyx_t_1->setX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 38, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":36
 *         """The x value"""
 *         return self.p2ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":40
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p2ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_9xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_8xErrs, "Point2D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_9xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_9xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_8xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_9xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_8xErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_8xErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point2D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Point2D.pyx":42
 *     def xErrs(self):
 *         """The x errors"""
 *         return util.read_error_pair(self.p2ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, val):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 42, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 42, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":40
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p2ptr().xErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":44
 *         return util.read_error_pair(self.p2ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_11setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_10setXErrs, "Point2D.setXErrs(self, val)\nSet the x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_11setXErrs = {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_11setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_10setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_11setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 44, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setXErrs") < 0)) __PYX_ERR(27, 44, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_val = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setXErrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 44, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_10setXErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_10setXErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 0);

  /* "include/Point2D.pyx":46
 *     def setXErrs(self, val):
 *         """Set the x errors"""
 *         self.p2ptr().setXErrs(util.read_symmetric(val))             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 46, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_util); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 46, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  try {
    __pyx_t_1->setXErrs(__pyx_t_6);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 46, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":44
 *         return util.read_error_pair(self.p2ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":48
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_13xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_12xMin, "Point2D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_13xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_13xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_12xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_13xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_12xMin(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_12xMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Point2D.pyx":50
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()             # <<<<<<<<<<<<<<
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 50, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 50, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":48
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":51
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_15xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_14xMax, "Point2D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_15xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_15xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_14xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_15xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_14xMax(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_14xMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Point2D.pyx":53
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 53, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 53, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":51
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":55
 *         return self.p2ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_17xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_16xErrAvg, "Point2D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_17xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_17xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_16xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_17xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_16xErrAvg(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_16xErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvg", 0);

  /* "include/Point2D.pyx":56
 * 
 *     def xErrAvg(self):
 *         return self.p2ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 56, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xErrAvg();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 56, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":55
 *         return self.p2ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.xErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":60
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_19y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_18y, "Point2D.y(self)\nThe y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_19y = {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_19y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_18y};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_19y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("y (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("y", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "y", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_18y(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_18y(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("y", 0);

  /* "include/Point2D.pyx":62
 *     def y(self):
 *         """The y value"""
 *         return self.p2ptr().y()             # <<<<<<<<<<<<<<
 *     def setY(self, y):
 *         """Set the y value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 62, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->y();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 62, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":60
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.y", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":63
 *         """The y value"""
 *         return self.p2ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_21setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_20setY, "Point2D.setY(self, y)\nSet the y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_21setY = {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_21setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_20setY};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_21setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 63, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setY") < 0)) __PYX_ERR(27, 63, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_y = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setY", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 63, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.setY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_20setY(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_20setY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setY", 0);

  /* "include/Point2D.pyx":65
 *     def setY(self, y):
 *         """Set the y value"""
 *         self.p2ptr().setY(y)             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 65, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 65, __pyx_L1_error)
  try {
    __pyx_t_1->setY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 65, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":63
 *         """The y value"""
 *         return self.p2ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.setY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":67
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The (total) y errors"""
 *         return util.read_error_pair(self.p2ptr().yErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_23yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_22yErrs, "Point2D.yErrs(self)\nThe (total) y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_23yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_23yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_22yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_23yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_22yErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_22yErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point2D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Point2D.pyx":69
 *     def yErrs(self):
 *         """The (total) y errors"""
 *         return util.read_error_pair(self.p2ptr().yErrs())             # <<<<<<<<<<<<<<
 * 
 *     def yErrsFromSource(self, source):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 69, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 69, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 69, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":67
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The (total) y errors"""
 *         return util.read_error_pair(self.p2ptr().yErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":71
 *         return util.read_error_pair(self.p2ptr().yErrs())
 * 
 *     def yErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors from a particular named source of uncertainty in the breakdown"""
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_25yErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_24yErrsFromSource, "Point2D.yErrsFromSource(self, source)\nThe y errors from a particular named source of uncertainty in the breakdown");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_25yErrsFromSource = {"yErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_25yErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_24yErrsFromSource};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_25yErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrsFromSource (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 71, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "yErrsFromSource") < 0)) __PYX_ERR(27, 71, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_source = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("yErrsFromSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 71, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.yErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_24yErrsFromSource(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_24yErrsFromSource(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point2D *__pyx_t_4;
  std::string __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrsFromSource", 0);

  /* "include/Point2D.pyx":73
 *     def yErrsFromSource(self, source):
 *         """The y errors from a particular named source of uncertainty in the breakdown"""
 *         return util.read_error_pair(self.p2ptr().yErrs(source))             # <<<<<<<<<<<<<<
 * 
 *     def setYErrs(self, *es):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 73, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 73, __pyx_L1_error)
  try {
    __pyx_t_6 = __pyx_t_4->yErrs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 73, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 73, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":71
 *         return util.read_error_pair(self.p2ptr().yErrs())
 * 
 *     def yErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors from a particular named source of uncertainty in the breakdown"""
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point2D.yErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":75
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_27setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_26setYErrs, "Point2D.setYErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n        (float, string) -> None\n        ([float, float], string) -> None\n        (float, float, string) -> None\n\n        Set asymmetric errors on y-axis with an optional string argument to\n        specify which named source of uncertainty in the error breakdown should\n        be set. By default, if no source is provided, the total uncertainty is set.\n\n        TODO: simplify, this is too much for the Python wrapper\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_27setYErrs = {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_27setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_26setYErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_27setYErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setYErrs (wrapper)", 0);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setYErrs", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_26setYErrs(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_26setYErrs(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_source = NULL;
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  YODA::Point *__pyx_t_9;
  std::pair<double,double>  __pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setYErrs", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Point2D.pyx":90
 *         TODO: simplify, this is too much for the Python wrapper
 *         """
 *         source = None             # <<<<<<<<<<<<<<
 *         es = list(es)
 *         if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Point2D.pyx":91
 *         """
 *         source = None
 *         es = list(es)             # <<<<<<<<<<<<<<
 *         if type(es[-1]) is str:
 *             source = es[-1]
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Point2D.pyx":92
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_t_1)) == ((PyObject *)(&PyString_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/Point2D.pyx":93
 *         es = list(es)
 *         if type(es[-1]) is str:
 *             source = es[-1]             # <<<<<<<<<<<<<<
 *             es = es[:-1]
 *         errs = es
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 93, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point2D.pyx":94
 *         if type(es[-1]) is str:
 *             source = es[-1]
 *             es = es[:-1]             # <<<<<<<<<<<<<<
 *         errs = es
 *         if source is None:
 */
    __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point2D.pyx":92
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  }

  /* "include/Point2D.pyx":95
 *             source = es[-1]
 *             es = es[:-1]
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point2D.pyx":96
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Point2D.pyx":97
 *         errs = es
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point2D.pyx":96
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  }

  /* "include/Point2D.pyx":98
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2,errs[0], source)
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(27, 98, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Point2D.pyx":99
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(2,errs[0], source)
 *                 return
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 99, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(27, 99, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Point2D.pyx":100
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2,errs[0], source)             # <<<<<<<<<<<<<<
 *                 return
 *             errs = errs[0]
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(27, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(27, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_int_2, __pyx_t_6, __pyx_v_source};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 100, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point2D.pyx":101
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2,errs[0], source)
 *                 return             # <<<<<<<<<<<<<<
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Point2D.pyx":99
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(2,errs[0], source)
 *                 return
 */
    }

    /* "include/Point2D.pyx":102
 *                 self.setErr(2,errs[0], source)
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(2, tuple(errs), source)
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point2D.pyx":98
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(2,errs[0], source)
 */
  }

  /* "include/Point2D.pyx":104
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(2, tuple(errs), source)             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.pptr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((YODA::Point *)NULL))) __PYX_ERR(27, 104, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 104, __pyx_L1_error)
  try {
    __pyx_t_9->setErrs(2, __pyx_t_10, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 104, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":75
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point2D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":106
 *         self.pptr().setErrs(2, tuple(errs), source)
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_29yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_28yMin, "Point2D.yMin(self)\nThe minimum y position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_29yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_29yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_28yMin};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_29yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_28yMin(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_28yMin(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Point2D.pyx":108
 *     def yMin(self):
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()             # <<<<<<<<<<<<<<
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 108, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 108, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":106
 *         self.pptr().setErrs(2, tuple(errs), source)
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":109
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_31yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_30yMax, "Point2D.yMax(self)\nThe maximum y position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_31yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_31yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_30yMax};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_31yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_30yMax(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_30yMax(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Point2D.pyx":111
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def yErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 111, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 111, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":109
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":113
 *         return self.p2ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_33yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_32yErrAvg, "Point2D.yErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_33yErrAvg = {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_33yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_32yErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_33yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_32yErrAvg(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_32yErrAvg(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrAvg", 0);

  /* "include/Point2D.pyx":114
 * 
 *     def yErrAvg(self):
 *         return self.p2ptr().yErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 114, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yErrAvg();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 114, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":113
 *         return self.p2ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point2D.yErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":128
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_35scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_34scaleX, "Point2D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_35scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_35scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_34scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_35scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 128, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(27, 128, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 128, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_34scaleX(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_34scaleX(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Point2D.pyx":131
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 *         self.p2ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 131, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 131, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 131, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":128
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":133
 *         self.p2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_37scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_36scaleY, "Point2D.scaleY(self, a)\n(float) -> None\n        Scale the y values and errors by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_37scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_37scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_36scaleY};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_37scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 133, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(27, 133, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(27, 133, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_36scaleY(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_36scaleY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Point2D.pyx":136
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 *         self.p2ptr().scaleY(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXY(self, x=1.0, y=1.0):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 136, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 136, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 136, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":133
 *         self.p2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":138
 *         self.p2ptr().scaleY(a)
 * 
 *     def scaleXY(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_39scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_38scaleXY, "Point2D.scaleXY(self, x=1.0, y=1.0)\n\n        (float=1, float=1) -> None\n        Scale the point coordinates by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_39scaleXY = {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_39scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_38scaleXY};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_39scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXY") < 0)) __PYX_ERR(27, 138, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXY", 0, 0, 2, __pyx_nargs); __PYX_ERR(27, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_38scaleXY(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_38scaleXY(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXY", 0);

  /* "include/Point2D.pyx":143
 *         Scale the point coordinates by the given factors.
 *         """
 *         self.p2ptr().scaleXY(x, y)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: remove
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 143, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 143, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 143, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXY(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 143, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":138
 *         self.p2ptr().scaleY(a)
 * 
 *     def scaleXY(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":146
 * 
 *     # TODO: remove
 *     def scale(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_41scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_40scale, "Point2D.scale(self, x=1.0, y=1.0)\n\n        (float=1, float=1) -> None\n        DEPRECATED! Use scaleXY\n        Scale the point coordinates by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_41scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_41scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_40scale};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_41scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 146, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(27, 146, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scale") < 0)) __PYX_ERR(27, 146, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 0, 0, 2, __pyx_nargs); __PYX_ERR(27, 146, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_40scale(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_40scale(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 0);

  /* "include/Point2D.pyx":152
 *         Scale the point coordinates by the given factors.
 *         """
 *         self.p2ptr().scaleXY(x, y)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 152, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 152, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(27, 152, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXY(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(27, 152, __pyx_L1_error)
  }

  /* "include/Point2D.pyx":146
 * 
 *     # TODO: remove
 *     def scale(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":155
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point2D(x=%g, y=%g)>' % (self.x(), self.y())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_43__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point2D_43__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_42__repr__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_42__repr__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Point2D.pyx":156
 * 
 *     def __repr__(self):
 *         return '<Point2D(x=%g, y=%g)>' % (self.x(), self.y())             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(27, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyString_Format(__pyx_kp_s_Point2D_x_g_y_g, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point2D.pyx":155
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point2D(x=%g, y=%g)>' % (self.x(), self.y())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point2D.pyx":158
 *         return '<Point2D(x=%g, y=%g)>' % (self.x(), self.y())
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_45__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point2D_45__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point2D, 1, "other", 0))) __PYX_ERR(27, 158, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_44__richcmp__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_44__richcmp__(struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point2D *__pyx_t_1;
  YODA::Point2D *__pyx_t_2;
  bool __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 0);

  /* "include/Point2D.pyx":159
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 *         elif op == 1:
 */
  switch (__pyx_v_op) {
    case 0:

    /* "include/Point2D.pyx":160
 *     def __richcmp__(Point2D self, Point2D other, int op):
 *         if op == 0:
 *             return deref(self.p2ptr()) < deref(other.p2ptr())             # <<<<<<<<<<<<<<
 *         elif op == 1:
 *             return deref(self.p2ptr()) <= deref(other.p2ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 160, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 160, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) < (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 160, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":159
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 *         elif op == 1:
 */
    break;
    case 1:

    /* "include/Point2D.pyx":162
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 *         elif op == 1:
 *             return deref(self.p2ptr()) <= deref(other.p2ptr())             # <<<<<<<<<<<<<<
 *         elif op == 2:
 *             return deref(self.p2ptr()) == deref(other.p2ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 162, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 162, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) <= (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 162, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":161
 *         if op == 0:
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 *         elif op == 1:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) <= deref(other.p2ptr())
 *         elif op == 2:
 */
    break;
    case 2:

    /* "include/Point2D.pyx":164
 *             return deref(self.p2ptr()) <= deref(other.p2ptr())
 *         elif op == 2:
 *             return deref(self.p2ptr()) == deref(other.p2ptr())             # <<<<<<<<<<<<<<
 *         elif op == 3:
 *             return deref(self.p2ptr()) != deref(other.p2ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 164, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 164, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) == (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 164, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":163
 *         elif op == 1:
 *             return deref(self.p2ptr()) <= deref(other.p2ptr())
 *         elif op == 2:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) == deref(other.p2ptr())
 *         elif op == 3:
 */
    break;
    case 3:

    /* "include/Point2D.pyx":166
 *             return deref(self.p2ptr()) == deref(other.p2ptr())
 *         elif op == 3:
 *             return deref(self.p2ptr()) != deref(other.p2ptr())             # <<<<<<<<<<<<<<
 *         elif op == 4:
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 166, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 166, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) != (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 166, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":165
 *         elif op == 2:
 *             return deref(self.p2ptr()) == deref(other.p2ptr())
 *         elif op == 3:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) != deref(other.p2ptr())
 *         elif op == 4:
 */
    break;
    case 4:

    /* "include/Point2D.pyx":168
 *             return deref(self.p2ptr()) != deref(other.p2ptr())
 *         elif op == 4:
 *             return deref(self.p2ptr()) > deref(other.p2ptr())             # <<<<<<<<<<<<<<
 *         elif op == 5:
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 168, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 168, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_1) > (*__pyx_t_2));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 168, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":167
 *         elif op == 3:
 *             return deref(self.p2ptr()) != deref(other.p2ptr())
 *         elif op == 4:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 *         elif op == 5:
 */
    break;
    case 5:

    /* "include/Point2D.pyx":170
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 *         elif op == 5:
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 170, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point2D *)NULL))) __PYX_ERR(27, 170, __pyx_L1_error)
    try {
      __pyx_t_3 = ((*__pyx_t_2) >= (*__pyx_t_1));
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(27, 170, __pyx_L1_error)
    }
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(27, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "include/Point2D.pyx":169
 *         elif op == 4:
 *             return deref(self.p2ptr()) > deref(other.p2ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p2ptr()) >= deref(other.p2ptr())
 */
    break;
    default: break;
  }

  /* "include/Point2D.pyx":158
 *         return '<Point2D(x=%g, y=%g)>' % (self.x(), self.y())
 * 
 *     def __richcmp__(Point2D self, Point2D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p2ptr()) < deref(other.p2ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point2D.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_47__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_46__reduce_cython__, "Point2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_47__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_47__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_46__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_47__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_46__reduce_cython__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_46__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point2D_49__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point2D_48__setstate_cython__, "Point2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point2D_49__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_49__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_48__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point2D_49__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point2D_48__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point2D_48__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":7
 *     """
 * 
 *     cdef c.Point3D* p3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point3D*> self.ptr()
 * 
 */

static YODA::Point3D *__pyx_f_4yoda_4core_7Point3D_p3ptr(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  YODA::Point3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("p3ptr", 0);

  /* "include/Point3D.pyx":8
 * 
 *     cdef c.Point3D* p3ptr(self) except NULL:
 *         return <c.Point3D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(28, 8, __pyx_L1_error)
  __pyx_r = ((YODA::Point3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Point3D.pyx":7
 *     """
 * 
 *     cdef c.Point3D* p3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Point3D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.p3ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point3D())
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_7Point3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_7Point3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_z = 0;
  PyObject *__pyx_v_xerrs = 0;
  PyObject *__pyx_v_yerrs = 0;
  PyObject *__pyx_v_zerrs = 0;
  PyObject *__pyx_v_source = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_xerrs,&__pyx_n_s_yerrs,&__pyx_n_s_zerrs,&__pyx_n_s_source,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    values[0] = ((PyObject *)__pyx_int_0);
    values[1] = ((PyObject *)__pyx_int_0);
    values[2] = ((PyObject *)__pyx_int_0);
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_int_0);
    values[5] = ((PyObject *)__pyx_int_0);
    values[6] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_VARARGS(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_VARARGS(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yerrs);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zerrs);
          if (value) { values[5] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  6:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_VARARGS(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source);
          if (value) { values[6] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 11, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(28, 11, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  7: values[6] = __Pyx_Arg_VARARGS(__pyx_args, 6);
        CYTHON_FALLTHROUGH;
        case  6: values[5] = __Pyx_Arg_VARARGS(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_VARARGS(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_VARARGS(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_VARARGS(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_VARARGS(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_VARARGS(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_z = values[2];
    __pyx_v_xerrs = values[3];
    __pyx_v_yerrs = values[4];
    __pyx_v_zerrs = values[5];
    __pyx_v_source = values[6];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 7, __pyx_nargs); __PYX_ERR(28, 11, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D___init__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_xerrs, __pyx_v_yerrs, __pyx_v_zerrs, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_7Point3D___init__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_zerrs, PyObject *__pyx_v_source) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  YODA::Point3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point3D.pyx":12
 * 
 *     def __init__(self, x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source=""):
 *         if source==None: source=""             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Point3D())
 *         # TODO: need shortcuts
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_source, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 12, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(28, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);
  }

  /* "include/Point3D.pyx":13
 *     def __init__(self, x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source=""):
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point3D())             # <<<<<<<<<<<<<<
 *         # TODO: need shortcuts
 *         self.setX(x)
 */
  try {
    __pyx_t_3 = new YODA::Point3D();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 13, __pyx_L1_error)
  }
  __pyx_t_1 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 13, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":15
 *         cutil.set_owned_ptr(self, new c.Point3D())
 *         # TODO: need shortcuts
 *         self.setX(x)             # <<<<<<<<<<<<<<
 *         self.setY(y)
 *         self.setZ(z)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setX); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_x};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":16
 *         # TODO: need shortcuts
 *         self.setX(x)
 *         self.setY(y)             # <<<<<<<<<<<<<<
 *         self.setZ(z)
 *         self.setXErrs(xerrs)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setY); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 16, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_y};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":17
 *         self.setX(x)
 *         self.setY(y)
 *         self.setZ(z)             # <<<<<<<<<<<<<<
 *         self.setXErrs(xerrs)
 *         self.setYErrs(yerrs)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setZ); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_z};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":18
 *         self.setY(y)
 *         self.setZ(z)
 *         self.setXErrs(xerrs)             # <<<<<<<<<<<<<<
 *         self.setYErrs(yerrs)
 *         self.setZErrs(zerrs, source)
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setXErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_xerrs};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":19
 *         self.setZ(z)
 *         self.setXErrs(xerrs)
 *         self.setYErrs(yerrs)             # <<<<<<<<<<<<<<
 *         self.setZErrs(zerrs, source)
 * 
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setYErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_yerrs};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 19, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":20
 *         self.setXErrs(xerrs)
 *         self.setYErrs(yerrs)
 *         self.setZErrs(zerrs, source)             # <<<<<<<<<<<<<<
 * 
 *     def copy(self):
 */
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setZErrs); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_v_zerrs, __pyx_v_source};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 20, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":11
 * 
 * 
 *     def __init__(self, x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source=""):             # <<<<<<<<<<<<<<
 *         if source==None: source=""
 *         cutil.set_owned_ptr(self, new c.Point3D())
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":22
 *         self.setZErrs(zerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_2copy, "Point3D.copy(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_3copy = {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_2copy};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_3copy(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("copy", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "copy", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_2copy(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_2copy(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  YODA::Point3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy", 0);

  /* "include/Point3D.pyx":23
 * 
 *     def copy(self):
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 23, __pyx_L1_error)
  try {
    __pyx_t_2 = new YODA::Point3D((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 23, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":22
 *         self.setZErrs(zerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.copy", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":27
 * 
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_5x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_4x, "Point3D.x(self)\nThe x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_5x = {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_5x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_4x};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_5x(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("x (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("x", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "x", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_4x(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_4x(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("x", 0);

  /* "include/Point3D.pyx":29
 *     def x(self):
 *         """The x value"""
 *         return self.p3ptr().x()             # <<<<<<<<<<<<<<
 *     def setX(self, x):
 *         """Set the x value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 29, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->x();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 29, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":27
 * 
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.x", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":30
 *         """The x value"""
 *         return self.p3ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_7setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_6setX, "Point3D.setX(self, x)\nSet the x value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_7setX = {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_7setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_6setX};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_7setX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 30, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setX") < 0)) __PYX_ERR(28, 30, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setX", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 30, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_6setX(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_6setX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setX", 0);

  /* "include/Point3D.pyx":32
 *     def setX(self, x):
 *         """Set the x value"""
 *         self.p3ptr().setX(x)             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 32, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 32, __pyx_L1_error)
  try {
    __pyx_t_1->setX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 32, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":30
 *         """The x value"""
 *         return self.p3ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":34
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p3ptr().xErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_9xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_8xErrs, "Point3D.xErrs(self)\nThe x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_9xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_9xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_8xErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_9xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_8xErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_8xErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point3D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Point3D.pyx":36
 *     def xErrs(self):
 *         """The x errors"""
 *         return util.read_error_pair(self.p3ptr().xErrs())             # <<<<<<<<<<<<<<
 * 
 *     def setXErrs(self, val):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 36, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->xErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 36, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 36, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":34
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p3ptr().xErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":38
 *         return util.read_error_pair(self.p3ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_11setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_10setXErrs, "Point3D.setXErrs(self, val)\nSet the x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_11setXErrs = {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_11setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_10setXErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_11setXErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setXErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 38, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setXErrs") < 0)) __PYX_ERR(28, 38, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_val = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setXErrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 38, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_10setXErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_10setXErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setXErrs", 0);

  /* "include/Point3D.pyx":40
 *     def setXErrs(self, val):
 *         """Set the x errors"""
 *         self.p3ptr().setXErrs(util.read_symmetric(val))             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 40, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_util); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  try {
    __pyx_t_1->setXErrs(__pyx_t_6);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 40, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":38
 *         return util.read_error_pair(self.p3ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.setXErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":42
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_13xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_12xMin, "Point3D.xMin(self)\nThe minimum x position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_13xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_13xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_12xMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_13xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_12xMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_12xMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Point3D.pyx":44
 *     def xMin(self):
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()             # <<<<<<<<<<<<<<
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 44, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 44, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":42
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":45
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_15xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_14xMax, "Point3D.xMax(self)\nThe maximum x position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_15xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_15xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_14xMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_15xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_14xMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_14xMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Point3D.pyx":47
 *     def xMax(self):
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()             # <<<<<<<<<<<<<<
 * 
 *     def xErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 47, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->xMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 47, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":45
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":49
 *         return self.p3ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_17xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_16xErrAvg, "Point3D.xErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_17xErrAvg = {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_17xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_16xErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_17xErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_16xErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_16xErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvg", 0);

  /* "include/Point3D.pyx":50
 * 
 *     def xErrAvg(self):
 *         return self.p3ptr().xErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 50, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->xErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":49
 *         return self.p3ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point3D.xErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":53
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_19y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_18y, "Point3D.y(self)\nThe y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_19y = {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_19y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_18y};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_19y(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("y (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("y", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "y", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_18y(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_18y(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("y", 0);

  /* "include/Point3D.pyx":55
 *     def y(self):
 *         """The y value"""
 *         return self.p3ptr().y()             # <<<<<<<<<<<<<<
 *     def setY(self, y):
 *         """Set the y value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 55, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->y();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 55, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":53
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.y", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":56
 *         """The y value"""
 *         return self.p3ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_21setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_20setY, "Point3D.setY(self, y)\nSet the y value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_21setY = {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_21setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_20setY};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_21setY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_y = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_y,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 56, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setY") < 0)) __PYX_ERR(28, 56, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_y = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setY", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 56, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_20setY(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_y);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_20setY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_y) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setY", 0);

  /* "include/Point3D.pyx":58
 *     def setY(self, y):
 *         """Set the y value"""
 *         self.p3ptr().setY(y)             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 58, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_y); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 58, __pyx_L1_error)
  try {
    __pyx_t_1->setY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 58, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":56
 *         """The y value"""
 *         return self.p3ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":60
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p3ptr().yErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_23yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_22yErrs, "Point3D.yErrs(self)\nThe y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_23yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_23yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_22yErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_23yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_22yErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_22yErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point3D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Point3D.pyx":62
 *     def yErrs(self):
 *         """The y errors"""
 *         return util.read_error_pair(self.p3ptr().yErrs())             # <<<<<<<<<<<<<<
 * 
 *     def setYErrs(self, val):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 62, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->yErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 62, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 62, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":60
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p3ptr().yErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":64
 *         return util.read_error_pair(self.p3ptr().yErrs())
 * 
 *     def setYErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the y errors"""
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_25setYErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_24setYErrs, "Point3D.setYErrs(self, val)\nSet the y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_25setYErrs = {"setYErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_25setYErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_24setYErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_25setYErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setYErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 64, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setYErrs") < 0)) __PYX_ERR(28, 64, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_val = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setYErrs", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 64, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_24setYErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_val);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_24setYErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setYErrs", 0);

  /* "include/Point3D.pyx":66
 *     def setYErrs(self, val):
 *         """Set the y errors"""
 *         self.p3ptr().setYErrs(util.read_symmetric(val))             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 66, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_util); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_val};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_6 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_2); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  try {
    __pyx_t_1->setYErrs(__pyx_t_6);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 66, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":64
 *         return util.read_error_pair(self.p3ptr().yErrs())
 * 
 *     def setYErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the y errors"""
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Point3D.setYErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":68
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_27yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_26yMin, "Point3D.yMin(self)\nThe minimum y position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_27yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_27yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_26yMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_27yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_26yMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_26yMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Point3D.pyx":70
 *     def yMin(self):
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()             # <<<<<<<<<<<<<<
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 70, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 70, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":68
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":71
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_29yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_28yMax, "Point3D.yMax(self)\nThe maximum y position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_29yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_29yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_28yMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_29yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_28yMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_28yMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Point3D.pyx":73
 *     def yMax(self):
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()             # <<<<<<<<<<<<<<
 * 
 *     def yErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 73, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->yMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 73, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":71
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":75
 *         return self.p3ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_31yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_30yErrAvg, "Point3D.yErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_31yErrAvg = {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_31yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_30yErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_31yErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_30yErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_30yErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrAvg", 0);

  /* "include/Point3D.pyx":76
 * 
 *     def yErrAvg(self):
 *         return self.p3ptr().yErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 76, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->yErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":75
 *         return self.p3ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point3D.yErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":79
 * 
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_33z(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_32z, "Point3D.z(self)\nThe z value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_33z = {"z", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_33z, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_32z};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_33z(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("z (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("z", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "z", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_32z(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_32z(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("z", 0);

  /* "include/Point3D.pyx":81
 *     def z(self):
 *         """The z value"""
 *         return self.p3ptr().z()             # <<<<<<<<<<<<<<
 *     def setZ(self, z):
 *         """Set the z value"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 81, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->z();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 81, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":79
 * 
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.z", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":82
 *         """The z value"""
 *         return self.p3ptr().z()
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_35setZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_34setZ, "Point3D.setZ(self, z)\nSet the z value");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_35setZ = {"setZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_35setZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_34setZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_35setZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_z = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_z,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 82, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setZ") < 0)) __PYX_ERR(28, 82, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_z = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 82, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_34setZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_z);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_34setZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_z) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setZ", 0);

  /* "include/Point3D.pyx":84
 *     def setZ(self, z):
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)             # <<<<<<<<<<<<<<
 * 
 *     def zErrs(self):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 84, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_z); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 84, __pyx_L1_error)
  try {
    __pyx_t_1->setZ(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 84, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":82
 *         """The z value"""
 *         return self.p3ptr().z()
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":86
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_37zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_36zErrs, "Point3D.zErrs(self)\nThe z errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_37zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_37zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_36zErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_37zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_36zErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_36zErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point3D *__pyx_t_4;
  std::pair<double,double>  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 0);

  /* "include/Point3D.pyx":88
 *     def zErrs(self):
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs())             # <<<<<<<<<<<<<<
 * 
 *     def zErrsFromSource(self, source):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 88, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_4->zErrs();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 88, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":86
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":90
 *         return util.read_error_pair(self.p3ptr().zErrs())
 * 
 *     def zErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_39zErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_38zErrsFromSource, "Point3D.zErrsFromSource(self, source)\nThe z errors");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_39zErrsFromSource = {"zErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_39zErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_38zErrsFromSource};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_39zErrsFromSource(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrsFromSource (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 90, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "zErrsFromSource") < 0)) __PYX_ERR(28, 90, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_source = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("zErrsFromSource", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 90, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.zErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_38zErrsFromSource(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_38zErrsFromSource(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  YODA::Point3D *__pyx_t_4;
  std::string __pyx_t_5;
  std::pair<double,double>  __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrsFromSource", 0);

  /* "include/Point3D.pyx":92
 *     def zErrsFromSource(self, source):
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs(source))             # <<<<<<<<<<<<<<
 * 
 *     def setZErrs(self, *es):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_util); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_read_error_pair); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_4 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 92, __pyx_L1_error)
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 92, __pyx_L1_error)
  try {
    __pyx_t_6 = __pyx_t_4->zErrs(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 92, __pyx_L1_error)
  }
  __pyx_t_2 = __pyx_convert_pair_to_py_double____double(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 92, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":90
 *         return util.read_error_pair(self.p3ptr().zErrs())
 * 
 *     def zErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point3D.zErrsFromSource", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":94
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_41setZErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_40setZErrs, "Point3D.setZErrs(self, *es)\n\n        (float,) -> None\n        ([float, float]) -> None\n        (float, float) -> None\n        (float, string) -> None\n        ([float, float], string) -> None\n        (float, float, string) -> None\n\n        Set asymmetric errors on z-axis with an optional string argument to\n        specify which named source of uncertainty in the error breakdown should\n        be set. By default, if no source is provided, the total uncertainty is set.\n\n        TODO: simplify, this is too much for the Python wrapper\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_41setZErrs = {"setZErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_41setZErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_40setZErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_41setZErrs(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_es = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setZErrs (wrapper)", 0);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "setZErrs", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_es = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_40setZErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_es);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_es);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_40setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_es) {
  PyObject *__pyx_v_source = NULL;
  PyObject *__pyx_v_errs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  YODA::Point *__pyx_t_9;
  std::pair<double,double>  __pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setZErrs", 0);
  __Pyx_INCREF(__pyx_v_es);

  /* "include/Point3D.pyx":109
 *         TODO: simplify, this is too much for the Python wrapper
 *         """
 *         source = None             # <<<<<<<<<<<<<<
 *         es = list(es)
 *         if type(es[-1]) is str:
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_source = Py_None;

  /* "include/Point3D.pyx":110
 *         """
 *         source = None
 *         es = list(es)             # <<<<<<<<<<<<<<
 *         if type(es[-1]) is str:
 *             source = es[-1]
 */
  __pyx_t_1 = PySequence_List(__pyx_v_es); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Point3D.pyx":111
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (((PyObject *)Py_TYPE(__pyx_t_1)) == ((PyObject *)(&PyString_Type)));
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/Point3D.pyx":112
 *         es = list(es)
 *         if type(es[-1]) is str:
 *             source = es[-1]             # <<<<<<<<<<<<<<
 *             es = es[:-1]
 *         errs = es
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_es, -1L, long, 1, __Pyx_PyInt_From_long, 1, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point3D.pyx":113
 *         if type(es[-1]) is str:
 *             source = es[-1]
 *             es = es[:-1]             # <<<<<<<<<<<<<<
 *         errs = es
 *         if source is None:
 */
    __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_es, 0, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_es, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point3D.pyx":111
 *         source = None
 *         es = list(es)
 *         if type(es[-1]) is str:             # <<<<<<<<<<<<<<
 *             source = es[-1]
 *             es = es[:-1]
 */
  }

  /* "include/Point3D.pyx":114
 *             source = es[-1]
 *             es = es[:-1]
 *         errs = es             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __Pyx_INCREF(__pyx_v_es);
  __pyx_v_errs = __pyx_v_es;

  /* "include/Point3D.pyx":115
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  __pyx_t_2 = (__pyx_v_source == Py_None);
  if (__pyx_t_2) {

    /* "include/Point3D.pyx":116
 *         errs = es
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point3D.pyx":115
 *             es = es[:-1]
 *         errs = es
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         if len(errs) == 1:
 */
  }

  /* "include/Point3D.pyx":117
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(3, errs[0], source)
 */
  __pyx_t_3 = PyObject_Length(__pyx_v_errs); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(28, 117, __pyx_L1_error)
  __pyx_t_2 = (__pyx_t_3 == 1);
  if (__pyx_t_2) {

    /* "include/Point3D.pyx":118
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(3, errs[0], source)
 *                 return
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_HasAttr(__pyx_t_1, __pyx_n_s_iter); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(28, 118, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = (!__pyx_t_2);
    if (__pyx_t_4) {

      /* "include/Point3D.pyx":119
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(3, errs[0], source)             # <<<<<<<<<<<<<<
 *                 return
 *             errs = errs[0]
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_setErr); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(28, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_int_3, __pyx_t_6, __pyx_v_source};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_8, 3+__pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 119, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/Point3D.pyx":120
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(3, errs[0], source)
 *                 return             # <<<<<<<<<<<<<<
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "include/Point3D.pyx":118
 *             source = ""
 *         if len(errs) == 1:
 *             if not hasattr(errs[0], "__iter__"):             # <<<<<<<<<<<<<<
 *                 self.setErr(3, errs[0], source)
 *                 return
 */
    }

    /* "include/Point3D.pyx":121
 *                 self.setErr(3, errs[0], source)
 *                 return
 *             errs = errs[0]             # <<<<<<<<<<<<<<
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(3, tuple(errs), source)
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_errs, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 121, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_errs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Point3D.pyx":117
 *         if source is None:
 *             source = ""
 *         if len(errs) == 1:             # <<<<<<<<<<<<<<
 *             if not hasattr(errs[0], "__iter__"):
 *                 self.setErr(3, errs[0], source)
 */
  }

  /* "include/Point3D.pyx":123
 *             errs = errs[0]
 *         # assert len(errs) == 2:
 *         self.pptr().setErrs(3, tuple(errs), source)             # <<<<<<<<<<<<<<
 * 
 *     def setZErrs(self, val, source):
 */
  __pyx_t_9 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.pptr(((struct __pyx_obj_4yoda_4core_Point *)__pyx_v_self)); if (unlikely(__pyx_t_9 == ((YODA::Point *)NULL))) __PYX_ERR(28, 123, __pyx_L1_error)
  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_errs); if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_10 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 123, __pyx_L1_error)
  try {
    __pyx_t_9->setErrs(3, __pyx_t_10, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_11));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 123, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":94
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Point3D.setZErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_es);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_errs);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":125
 *         self.pptr().setErrs(3, tuple(errs), source)
 * 
 *     def setZErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 *         Set symmetric errors on z-axis with an optional string argument to
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_43setZErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_42setZErrs, "Point3D.setZErrs(self, val, source)\n(float, string) -> None\n        Set symmetric errors on z-axis with an optional string argument to\n        specify which named source of uncertainty in the error breakdown should\n        be set. By default, if no source is provided, the total uncertainty is set");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_43setZErrs = {"setZErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_43setZErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_42setZErrs};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_43setZErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_val = 0;
  PyObject *__pyx_v_source = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("setZErrs (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_val,&__pyx_n_s_source,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_val)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 125, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_source)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 125, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("setZErrs", 1, 2, 2, 1); __PYX_ERR(28, 125, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "setZErrs") < 0)) __PYX_ERR(28, 125, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_val = values[0];
    __pyx_v_source = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("setZErrs", 1, 2, 2, __pyx_nargs); __PYX_ERR(28, 125, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.setZErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_42setZErrs(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_val, __pyx_v_source);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_42setZErrs(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_val, PyObject *__pyx_v_source) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  YODA::Point3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  std::pair<double,double>  __pyx_t_7;
  std::string __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("setZErrs", 0);
  __Pyx_INCREF(__pyx_v_source);

  /* "include/Point3D.pyx":130
 *         specify which named source of uncertainty in the error breakdown should
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 */
  __pyx_t_1 = (__pyx_v_source == Py_None);
  if (__pyx_t_1) {

    /* "include/Point3D.pyx":131
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:
 *             source = ""             # <<<<<<<<<<<<<<
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 * 
 */
    __Pyx_INCREF(__pyx_kp_s__2);
    __Pyx_DECREF_SET(__pyx_v_source, __pyx_kp_s__2);

    /* "include/Point3D.pyx":130
 *         specify which named source of uncertainty in the error breakdown should
 *         be set. By default, if no source is provided, the total uncertainty is set"""
 *         if source is None:             # <<<<<<<<<<<<<<
 *             source = ""
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 */
  }

  /* "include/Point3D.pyx":132
 *         if source is None:
 *             source = ""
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)             # <<<<<<<<<<<<<<
 * 
 *     def zMin(self):
 */
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_util); if (unlikely(!__pyx_t_4)) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_read_symmetric); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_val};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 132, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_7 = __pyx_convert_pair_from_py_double__and_double(__pyx_t_3); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_8 = __pyx_convert_string_from_py_std__in_string(__pyx_v_source); if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 132, __pyx_L1_error)
  try {
    __pyx_t_2->setZErrs(__pyx_t_7, __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_8));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 132, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":125
 *         self.pptr().setErrs(3, tuple(errs), source)
 * 
 *     def setZErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 *         Set symmetric errors on z-axis with an optional string argument to
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Point3D.setZErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":134
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_45zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_44zMin, "Point3D.zMin(self)\nThe minimum z position, i.e. lowest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_45zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_45zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_44zMin};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_45zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_44zMin(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_44zMin(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 0);

  /* "include/Point3D.pyx":136
 *     def zMin(self):
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()             # <<<<<<<<<<<<<<
 *     def zMax(self):
 *         """The maximum z position, i.e. highest error"""
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 136, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->zMin();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 136, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":134
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":137
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_47zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_46zMax, "Point3D.zMax(self)\nThe maximum z position, i.e. highest error");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_47zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_47zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_46zMax};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_47zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_46zMax(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_46zMax(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 0);

  /* "include/Point3D.pyx":139
 *     def zMax(self):
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()             # <<<<<<<<<<<<<<
 * 
 *     def zErrAvg(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 139, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->zMax();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 139, __pyx_L1_error)
  }
  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":137
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":141
 *         return self.p3ptr().zMax()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_49zErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_48zErrAvg, "Point3D.zErrAvg(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_49zErrAvg = {"zErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_49zErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_48zErrAvg};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_49zErrAvg(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrAvg (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrAvg", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrAvg", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_48zErrAvg(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_48zErrAvg(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrAvg", 0);

  /* "include/Point3D.pyx":142
 * 
 *     def zErrAvg(self):
 *         return self.p3ptr().zErrAvg()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 142, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(__pyx_t_1->zErrAvg()); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":141
 *         return self.p3ptr().zMax()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Point3D.zErrAvg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":179
 * 
 * 
 *     def scaleX(self, ax):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_51scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_50scaleX, "Point3D.scaleX(self, ax)\n\n        (float) -> None\n        Scale the x point coordinates by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_51scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_51scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_50scaleX};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_51scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ax = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ax,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ax)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 179, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(28, 179, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ax = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 179, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_50scaleX(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_ax);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_50scaleX(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Point3D.pyx":184
 *         Scale the x point coordinates by the given factor.
 *         """
 *         self.p3ptr().scaleX(ax)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, ay):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 184, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ax); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 184, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 184, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":179
 * 
 * 
 *     def scaleX(self, ax):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":186
 *         self.p3ptr().scaleX(ax)
 * 
 *     def scaleY(self, ay):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_53scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_52scaleY, "Point3D.scaleY(self, ay)\n\n        (float) -> None\n        Scale the y point coordinates by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_53scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_53scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_52scaleY};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_53scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ay = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ay,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ay)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 186, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(28, 186, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_ay = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 186, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_52scaleY(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_ay);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_52scaleY(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ay) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Point3D.pyx":191
 *         Scale the y point coordinates by the given factor.
 *         """
 *         self.p3ptr().scaleY(ay)             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, az):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 191, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ay); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 191, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 191, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":186
 *         self.p3ptr().scaleX(ax)
 * 
 *     def scaleY(self, ay):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":193
 *         self.p3ptr().scaleY(ay)
 * 
 *     def scaleZ(self, az):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_55scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_54scaleZ, "Point3D.scaleZ(self, az)\n\n        (float) -> None\n        Scale the z point coordinates by the given factor.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_55scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_55scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_54scaleZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_55scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_az = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_az,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_az)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 193, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleZ") < 0)) __PYX_ERR(28, 193, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_az = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(28, 193, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_54scaleZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_az);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_54scaleZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_az) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleZ", 0);

  /* "include/Point3D.pyx":198
 *         Scale the z point coordinates by the given factor.
 *         """
 *         self.p3ptr().scaleZ(az)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 198, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_az); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 198, __pyx_L1_error)
  try {
    __pyx_t_1->scaleZ(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 198, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":193
 *         self.p3ptr().scaleY(ay)
 * 
 *     def scaleZ(self, az):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":200
 *         self.p3ptr().scaleZ(az)
 * 
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1.0, float=1.0, float=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_57scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_56scaleXYZ, "Point3D.scaleXYZ(self, ax=1.0, ay=1.0, az=1.0)\n\n        (float=1.0, float=1.0, float=1.0) -> None\n        Scale the point coordinates by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_57scaleXYZ = {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_57scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_56scaleXYZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_57scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ax = 0;
  PyObject *__pyx_v_ay = 0;
  PyObject *__pyx_v_az = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXYZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ax,&__pyx_n_s_ay,&__pyx_n_s_az,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ax);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 200, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ay);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 200, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_az);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 200, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXYZ") < 0)) __PYX_ERR(28, 200, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ax = values[0];
    __pyx_v_ay = values[1];
    __pyx_v_az = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXYZ", 0, 0, 3, __pyx_nargs); __PYX_ERR(28, 200, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_56scaleXYZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_ax, __pyx_v_ay, __pyx_v_az);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_56scaleXYZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXYZ", 0);

  /* "include/Point3D.pyx":205
 *         Scale the point coordinates by the given factors.
 *         """
 *         self.p3ptr().scaleXYZ(ax, ay, az)             # <<<<<<<<<<<<<<
 * 
 *     # TODO: remove
 */
  __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 205, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ax); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 205, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ay); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 205, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_az); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(28, 205, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXYZ(__pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(28, 205, __pyx_L1_error)
  }

  /* "include/Point3D.pyx":200
 *         self.p3ptr().scaleZ(az)
 * 
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1.0, float=1.0, float=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":208
 * 
 *     # TODO: remove
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (double=1.0, double=1.0, double=1.0) -> None
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_59scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_58scaleXYZ, "Point3D.scaleXYZ(self, ax=1.0, ay=1.0, az=1.0)\n\n        (double=1.0, double=1.0, double=1.0) -> None\n        DEPRECATED: USE scaleXYZ\n        Scale the point coordinates by the given factors.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_59scaleXYZ = {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_59scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_58scaleXYZ};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_59scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ax = 0;
  PyObject *__pyx_v_ay = 0;
  PyObject *__pyx_v_az = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXYZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ax,&__pyx_n_s_ay,&__pyx_n_s_az,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    values[2] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ax);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 208, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ay);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 208, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_az);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(28, 208, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXYZ") < 0)) __PYX_ERR(28, 208, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ax = values[0];
    __pyx_v_ay = values[1];
    __pyx_v_az = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXYZ", 0, 0, 3, __pyx_nargs); __PYX_ERR(28, 208, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_58scaleXYZ(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v_ax, __pyx_v_ay, __pyx_v_az);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_58scaleXYZ(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXYZ", 0);

  /* "include/Point3D.pyx":214
 *         Scale the point coordinates by the given factors.
 *         """
 *         self.scaleXYZ(ax, ay, az)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scaleXYZ); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_ax, __pyx_v_ay, __pyx_v_az};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 3+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Point3D.pyx":208
 * 
 *     # TODO: remove
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (double=1.0, double=1.0, double=1.0) -> None
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":220
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point3D(x=%g, y=%g, z=%g)>' % (self.x(), self.y(), self.z())
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_61__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point3D_61__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_60__repr__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_60__repr__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Point3D.pyx":221
 * 
 *     def __repr__(self):
 *         return '<Point3D(x=%g, y=%g, z=%g)>' % (self.x(), self.y(), self.z())             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(28, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_y); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_5, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_z); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_Point3D_x_g_y_g_z_g, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Point3D.pyx":220
 * 
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return '<Point3D(x=%g, y=%g, z=%g)>' % (self.x(), self.y(), self.z())
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Point3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Point3D.pyx":223
 *         return '<Point3D(x=%g, y=%g, z=%g)>' % (self.x(), self.y(), self.z())
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_63__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_7Point3D_63__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_4yoda_4core_Point3D, 1, "other", 0))) __PYX_ERR(28, 223, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_62__richcmp__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), ((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_62__richcmp__(struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Point3D *__pyx_t_1;
  YODA::Point3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 0);

  /* "include/Point3D.pyx":224
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 *         elif op == 1:
 */
  switch (__pyx_v_op) {
    case 0:

    /* "include/Point3D.pyx":225
 *     def __richcmp__(Point3D self, Point3D other, int op):
 *         if op == 0:
 *             return deref(self.p3ptr()) < deref(other.p3ptr())             # <<<<<<<<<<<<<<
 *         elif op == 1:
 *             return deref(self.p3ptr()) <= deref(other.p3ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 225, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 225, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) < (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":224
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):
 *         if op == 0:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 *         elif op == 1:
 */
    break;
    case 1:

    /* "include/Point3D.pyx":227
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 *         elif op == 1:
 *             return deref(self.p3ptr()) <= deref(other.p3ptr())             # <<<<<<<<<<<<<<
 *         elif op == 2:
 *             return deref(self.p3ptr()) == deref(other.p3ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 227, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 227, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) <= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":226
 *         if op == 0:
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 *         elif op == 1:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) <= deref(other.p3ptr())
 *         elif op == 2:
 */
    break;
    case 2:

    /* "include/Point3D.pyx":229
 *             return deref(self.p3ptr()) <= deref(other.p3ptr())
 *         elif op == 2:
 *             return deref(self.p3ptr()) == deref(other.p3ptr())             # <<<<<<<<<<<<<<
 *         elif op == 3:
 *             return deref(self.p3ptr()) != deref(other.p3ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 229, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 229, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) == (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":228
 *         elif op == 1:
 *             return deref(self.p3ptr()) <= deref(other.p3ptr())
 *         elif op == 2:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) == deref(other.p3ptr())
 *         elif op == 3:
 */
    break;
    case 3:

    /* "include/Point3D.pyx":231
 *             return deref(self.p3ptr()) == deref(other.p3ptr())
 *         elif op == 3:
 *             return deref(self.p3ptr()) != deref(other.p3ptr())             # <<<<<<<<<<<<<<
 *         elif op == 4:
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 231, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 231, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) != (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":230
 *         elif op == 2:
 *             return deref(self.p3ptr()) == deref(other.p3ptr())
 *         elif op == 3:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) != deref(other.p3ptr())
 *         elif op == 4:
 */
    break;
    case 4:

    /* "include/Point3D.pyx":233
 *             return deref(self.p3ptr()) != deref(other.p3ptr())
 *         elif op == 4:
 *             return deref(self.p3ptr()) > deref(other.p3ptr())             # <<<<<<<<<<<<<<
 *         elif op == 5:
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 233, __pyx_L1_error)
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 233, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_1) > (*__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 233, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":232
 *         elif op == 3:
 *             return deref(self.p3ptr()) != deref(other.p3ptr())
 *         elif op == 4:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 *         elif op == 5:
 */
    break;
    case 5:

    /* "include/Point3D.pyx":235
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 *         elif op == 5:
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())             # <<<<<<<<<<<<<<
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_self); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 235, __pyx_L1_error)
    __pyx_t_1 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_other->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_other); if (unlikely(__pyx_t_1 == ((YODA::Point3D *)NULL))) __PYX_ERR(28, 235, __pyx_L1_error)
    __pyx_t_3 = __Pyx_PyBool_FromLong(((*__pyx_t_2) >= (*__pyx_t_1))); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 235, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "include/Point3D.pyx":234
 *         elif op == 4:
 *             return deref(self.p3ptr()) > deref(other.p3ptr())
 *         elif op == 5:             # <<<<<<<<<<<<<<
 *             return deref(self.p3ptr()) >= deref(other.p3ptr())
 */
    break;
    default: break;
  }

  /* "include/Point3D.pyx":223
 *         return '<Point3D(x=%g, y=%g, z=%g)>' % (self.x(), self.y(), self.z())
 * 
 *     def __richcmp__(Point3D self, Point3D other, int op):             # <<<<<<<<<<<<<<
 *         if op == 0:
 *             return deref(self.p3ptr()) < deref(other.p3ptr())
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Point3D.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_65__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_64__reduce_cython__, "Point3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_65__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_65__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_64__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_65__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_64__reduce_cython__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_64__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_7Point3D_67__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_7Point3D_66__setstate_cython__, "Point3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_7Point3D_67__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_67__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_66__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_7Point3D_67__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_7Point3D_66__setstate_cython__(((struct __pyx_obj_4yoda_4core_Point3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_7Point3D_66__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Point3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter1D* s1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter1D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Scatter1D *__pyx_f_4yoda_4core_9Scatter1D_s1ptr(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  YODA::Scatter1D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("s1ptr", 0);

  /* "include/Scatter1D.pyx":19
 * 
 *     cdef inline c.Scatter1D* s1ptr(self) except NULL:
 *         return <c.Scatter1D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(4, 19, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter1D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter1D* s1ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter1D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.s1ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":22
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Scatter1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Scatter1D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D___init__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_9Scatter1D___init__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Scatter1D.pyx":23
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__init_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":22
 * 
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":25
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_2__init_2, "Scatter1D.__init_2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_3_Scatter1D__init_2 = {"_Scatter1D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_2__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__init_2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 25, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 25, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter1D__init_2") < 0)) __PYX_ERR(4, 25, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__init_2", 0, 0, 2, __pyx_nargs); __PYX_ERR(4, 25, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_2__init_2(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Scatter1D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__init_2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Scatter1D.pyx":26
 * 
 *     def __init_2(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Scatter1D.pyx":27
 *     def __init_2(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Scatter1D.pyx":28
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_3(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 28, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 28, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Scatter1D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 28, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Scatter1D.pyx":25
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":30
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_4__init_3, "Scatter1D.__init_3(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_5_Scatter1D__init_3 = {"_Scatter1D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_4__init_3};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__init_3 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_points)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 30, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 30, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 30, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter1D__init_3") < 0)) __PYX_ERR(4, 30, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_points = values[0];
    __pyx_v_path = values[1];
    __pyx_v_title = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__init_3", 0, 1, 3, __pyx_nargs); __PYX_ERR(4, 30, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_4__init_3(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__init_3", 0);

  /* "include/Scatter1D.pyx":31
 * 
 *     def __init_3(self, points, path="", title=""):
 *         self.__init_2(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_path, __pyx_v_title};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":32
 *     def __init_3(self, points, path="", title=""):
 *         self.__init_2(path, title)
 *         self.addPoints(points)             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_points};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 32, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":30
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":34
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_6clone, "Scatter1D.clone(self)\n() -> Scatter1D.\n        Clone this Scatter1D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_7clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_6clone};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_6clone(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_6clone(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  YODA::Scatter1D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Scatter1D.pyx":37
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 37, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 37, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":34
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":39
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_9__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_9__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_8__repr__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Scatter1D.pyx":40
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 40, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_points, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":39
 *         return cutil.new_owned_cls(Scatter1D, self.s1ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter1D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":43
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_10reset, "Scatter1D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_11reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_10reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_10reset(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_10reset(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Scatter1D.pyx":45
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 45, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 45, __pyx_L1_error)
  }

  /* "include/Scatter1D.pyx":43
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":48
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_12numPoints, "Scatter1D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_13numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_12numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numPoints", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numPoints", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_12numPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numPoints", 0);

  /* "include/Scatter1D.pyx":51
 *         """() -> int
 *         Number of points in this scatter."""
 *         return self.s1ptr().numPoints()             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 51, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numPoints();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 51, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":48
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.numPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":53
 *         return self.s1ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter1D_15__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter1D_15__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_14__len__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter1D_14__len__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Scatter1D.pyx":54
 * 
 *     def __len__(self):
 *         return self.numPoints()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 54, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":53
 *         return self.s1ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":57
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_16points, "Scatter1D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_17points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_16points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("points", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "points", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_16points(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_16points(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("points", 0);

  /* "include/Scatter1D.pyx":59
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 59, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(4, 59, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 59, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(4, 59, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 59, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 59, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 59, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_i};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(4, 59, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":57
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Scatter1D.points", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":61
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_18point, "Scatter1D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_19point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_18point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_i;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 61, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "point") < 0)) __PYX_ERR(4, 61, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 61, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 61, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_18point(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_18point(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("point", 0);

  /* "include/Scatter1D.pyx":63
 *     def point(self, size_t i):
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 63, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), (&__pyx_t_1->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":61
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter1D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":65
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_20__getitem__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter1D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Scatter1D.pyx":66
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(4, 66, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 66, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(4, 66, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/Scatter1D.pyx":67
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 67, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), (&__pyx_t_8->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":65
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":70
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_22addPoint, "Scatter1D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point1D object, or the\n        two args: x, xerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_23addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_22addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "addPoint", 1))) return NULL;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_22addPoint(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 0);

  /* "include/Scatter1D.pyx":76
 *         two args: x, xerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter1D.pyx":77
 *         """
 *         try:
 *             self.__addPoint_point(*args, **kwargs)             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__addPoint_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 77, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 77, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 77, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "include/Scatter1D.pyx":76
 *         two args: x, xerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter1D.pyx":78
 *         try:
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter1D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(4, 78, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);

      /* "include/Scatter1D.pyx":79
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):
 */
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__addPoint_explicit); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 79, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 79, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_v_args, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 79, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter1D.pyx":76
 *         two args: x, xerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter1D.pyx":70
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter1D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":81
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_24__addPoint_explicit, "Scatter1D.__addPoint_explicit(self, x, xerrs=0)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit = {"_Scatter1D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_24__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_xerrs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_explicit (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xerrs,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)__pyx_int_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 81, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 81, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter1D__addPoint_explicit") < 0)) __PYX_ERR(4, 81, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_xerrs = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__addPoint_explicit", 0, 1, 2, __pyx_nargs); __PYX_ERR(4, 81, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_24__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_x, __pyx_v_xerrs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_xerrs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_explicit", 0);

  /* "include/Scatter1D.pyx":82
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):
 *         self.__addPoint_point(Point1D(x, xerrs))             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_point(self, Point1D p):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter1D__addPoint_point); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
  __Pyx_INCREF(__pyx_v_xerrs);
  __Pyx_GIVEREF(__pyx_v_xerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_xerrs);
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point1D), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":81
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":84
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_point, "Scatter1D.__addPoint_point(self, Point1D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point = {"_Scatter1D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_p = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 84, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter1D__addPoint_point") < 0)) __PYX_ERR(4, 84, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_p = ((struct __pyx_obj_4yoda_4core_Point1D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter1D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 84, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p), __pyx_ptype_4yoda_4core_Point1D, 1, "p", 0))) __PYX_ERR(4, 84, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_26__addPoint_point(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_p);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point1D *__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  YODA::Point1D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter1D__addPoint_point", 0);

  /* "include/Scatter1D.pyx":85
 * 
 *     def __addPoint_point(self, Point1D p):
 *         self.s1ptr().addPoint(p.p1ptr()[0])             # <<<<<<<<<<<<<<
 * 
 *     def addPoints(self, iterable):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 85, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point1D *)__pyx_v_p->__pyx_base.__pyx_base.__pyx_vtab)->p1ptr(__pyx_v_p); if (unlikely(__pyx_t_2 == ((YODA::Point1D *)NULL))) __PYX_ERR(4, 85, __pyx_L1_error)
  __pyx_t_1->addPoint((__pyx_t_2[0]));

  /* "include/Scatter1D.pyx":84
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._Scatter1D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":87
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_28addPoints, "Scatter1D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_29addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_28addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_iterable = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_iterable)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 87, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPoints") < 0)) __PYX_ERR(4, 87, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_iterable = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 87, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_28addPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_iterable) {
  PyObject *__pyx_v_row = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 0);

  /* "include/Scatter1D.pyx":89
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  if (likely(PyList_CheckExact(__pyx_v_iterable)) || PyTuple_CheckExact(__pyx_v_iterable)) {
    __pyx_t_1 = __pyx_v_iterable; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 89, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(4, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(4, 89, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 89, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Scatter1D.pyx":90
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "include/Scatter1D.pyx":91
 *         for row in iterable:
 *           try:
 *             self.addPoint(*row)             # <<<<<<<<<<<<<<
 *           except TypeError:
 *             self.addPoint(row)
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 91, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 91, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 91, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "include/Scatter1D.pyx":90
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "include/Scatter1D.pyx":92
 *           try:
 *             self.addPoint(*row)
 *           except TypeError:             # <<<<<<<<<<<<<<
 *             self.addPoint(row)
 * 
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("yoda.core.Scatter1D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(4, 92, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/Scatter1D.pyx":93
 *             self.addPoint(*row)
 *           except TypeError:
 *             self.addPoint(row)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoint(self, idx):
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 93, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_10 = 1;
          }
        }
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(4, 93, __pyx_L7_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L6_exception_handled;
      }
      goto __pyx_L7_except_error;

      /* "include/Scatter1D.pyx":90
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_L12_try_end:;
    }

    /* "include/Scatter1D.pyx":89
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":87
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter1D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":95
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_30rmPoint, "Scatter1D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_31rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_30rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idx)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 95, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoint") < 0)) __PYX_ERR(4, 95, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idx = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 95, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_30rmPoint(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idx) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  size_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoint", 0);

  /* "include/Scatter1D.pyx":96
 * 
 *     def rmPoint(self, idx):
 *         self.s1ptr().rmPoint(idx)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoints(self, idxs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 96, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 96, __pyx_L1_error)
  __pyx_t_1->rmPoint(__pyx_t_2);

  /* "include/Scatter1D.pyx":95
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":98
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_32rmPoints, "Scatter1D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_33rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_32rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idxs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idxs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 98, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoints") < 0)) __PYX_ERR(4, 98, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idxs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 98, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_32rmPoints(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_idxs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  std::vector<size_t>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoints", 0);

  /* "include/Scatter1D.pyx":99
 * 
 *     def rmPoints(self, idxs):
 *         self.s1ptr().rmPoints(idxs)             # <<<<<<<<<<<<<<
 * 
 *     def combineWith(self, others):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 99, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 99, __pyx_L1_error)
  __pyx_t_1->rmPoints(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2));

  /* "include/Scatter1D.pyx":98
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":101
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_34combineWith, "Scatter1D.combineWith(self, others)\nTry to add points from other Scatter1Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_35combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_34combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_others = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_others)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 101, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "combineWith") < 0)) __PYX_ERR(4, 101, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_others = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 101, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_34combineWith(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_others) {
  struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_other = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  YODA::Scatter1D *__pyx_t_5;
  YODA::Scatter1D *__pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("combineWith", 0);

  /* "include/Scatter1D.pyx":104
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter1D?
 *             other = others
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter1D.pyx":106
 *         try:
 *             # Can we type it as a Scatter1D?
 *             other = others             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             # Could be an iterable...
 */
      if (!(likely(((__pyx_v_others) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_others, __pyx_ptype_4yoda_4core_Scatter1D))))) __PYX_ERR(4, 106, __pyx_L3_error)
      __pyx_t_4 = __pyx_v_others;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/Scatter1D.pyx":104
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter1D?
 *             other = others
 */
    }

    /* "include/Scatter1D.pyx":112
 *                 self.s1ptr().combineWith(deref(other.s1ptr()))
 *         else:
 *             self.s1ptr().combineWith(deref(other.s1ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 112, __pyx_L5_except_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 112, __pyx_L5_except_error)
      __pyx_t_5->combineWith((*__pyx_t_6));
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/Scatter1D.pyx":107
 *             # Can we type it as a Scatter1D?
 *             other = others
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             # Could be an iterable...
 *             for other in others:
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter1D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(4, 107, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/Scatter1D.pyx":109
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s1ptr().combineWith(deref(other.s1ptr()))
 *         else:
 */
      if (likely(PyList_CheckExact(__pyx_v_others)) || PyTuple_CheckExact(__pyx_v_others)) {
        __pyx_t_10 = __pyx_v_others; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0;
        __pyx_t_12 = NULL;
      } else {
        __pyx_t_11 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_others); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 109, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 109, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(4, 109, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 109, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(4, 109, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(4, 109, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          }
        } else {
          __pyx_t_13 = __pyx_t_12(__pyx_t_10);
          if (unlikely(!__pyx_t_13)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(4, 109, __pyx_L5_except_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_13);
        }
        if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_4yoda_4core_Scatter1D))))) __PYX_ERR(4, 109, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/Scatter1D.pyx":110
 *             # Could be an iterable...
 *             for other in others:
 *                 self.s1ptr().combineWith(deref(other.s1ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             self.s1ptr().combineWith(deref(other.s1ptr()))
 */
        __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 110, __pyx_L5_except_error)
        __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 110, __pyx_L5_except_error)
        __pyx_t_6->combineWith((*__pyx_t_5));

        /* "include/Scatter1D.pyx":109
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s1ptr().combineWith(deref(other.s1ptr()))
 *         else:
 */
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter1D.pyx":104
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter1D?
 *             other = others
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter1D.pyx":101
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter1D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_other);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":115
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_36mkScatter, "Scatter1D.mkScatter(self)\nNone -> Scatter1D.\n        Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,\n        even if it already is a scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_37mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_36mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mkScatter", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mkScatter", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_36mkScatter(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  YODA::Scatter1D __pyx_v_s2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  YODA::Scatter1D __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Scatter1D.pyx":119
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         cdef c.Scatter1D s2 = c.mkScatter_Scatter1D(deref(self.s1ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter1D, s2.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 119, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::mkScatter((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 119, __pyx_L1_error)
  }
  __pyx_v_s2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter1D.pyx":120
 *         even if it already is a scatter."""
 *         cdef c.Scatter1D s2 = c.mkScatter_Scatter1D(deref(self.s1ptr()))
 *         return cutil.new_owned_cls(Scatter1D, s2.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_s2.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 120, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":115
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":123
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_38scaleX, "Scatter1D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_39scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_38scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 123, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(4, 123, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 123, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_38scaleX(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Scatter1D.pyx":126
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s1ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 126, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 126, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 126, __pyx_L1_error)
  }

  /* "include/Scatter1D.pyx":123
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":129
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_41scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_40scale, "Scatter1D.scale(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_41scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_41scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_40scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_41scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_scale = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 129, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 129, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(4, 129, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scale") < 0)) __PYX_ERR(4, 129, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_scale = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(4, 129, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_40scale(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_40scale(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 0);

  /* "include/Scatter1D.pyx":132
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s1ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 132, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 132, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(4, 132, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 132, __pyx_L1_error)
  }

  /* "include/Scatter1D.pyx":129
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":135
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_43transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_42transformX, "Scatter1D.transformX(self, f)\n(fn) -> None\n        Transform the x values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_43transformX = {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_43transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_42transformX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_43transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 135, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformX") < 0)) __PYX_ERR(4, 135, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformX", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 135, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_42transformX(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_42transformX(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter1D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformX", 0);

  /* "include/Scatter1D.pyx":138
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter1D.pyx":139
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter1D.pyx":140
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 140, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 140, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 140, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 140, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 140, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter1D.pyx":139
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter1D.pyx":141
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter1D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(4, 141, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter1D.pyx":142
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(4, 142, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(4, 142, __pyx_L5_except_error)
    }

    /* "include/Scatter1D.pyx":139
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter1D.pyx":143
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter1D.pyx":144
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 *     def parseVariations(self):
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 144, __pyx_L1_error)
  YODA::transformX((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter1D.pyx":135
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter1D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":146
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_45parseVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_44parseVariations, "Scatter1D.parseVariations(self)\nNone -> None\n        Parse the YAML which contains the variations stored in the points of the Scatter.\n        Only needs to be done once!");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_45parseVariations = {"parseVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_45parseVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_44parseVariations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_45parseVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parseVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("parseVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "parseVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_44parseVariations(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_44parseVariations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("parseVariations", 0);

  /* "include/Scatter1D.pyx":150
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 *         Only needs to be done once!"""
 *         return self.s1ptr().parseVariations()             # <<<<<<<<<<<<<<
 * 
 *     def updateTotalUncertainty(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 150, __pyx_L1_error)
  try {
    __pyx_t_1->parseVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 150, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":146
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter1D.parseVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":152
 *         return self.s1ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_47updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_46updateTotalUncertainty, "Scatter1D.updateTotalUncertainty(self)\nNone -> None\n        Sum the error in the error map in quadrature and update the total (\"\") uncertainty.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_47updateTotalUncertainty = {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_47updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_46updateTotalUncertainty};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_47updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("updateTotalUncertainty (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("updateTotalUncertainty", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "updateTotalUncertainty", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_46updateTotalUncertainty(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_46updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("updateTotalUncertainty", 0);

  /* "include/Scatter1D.pyx":156
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 *         """
 *         return self.s1ptr().updateTotalUncertainty()             # <<<<<<<<<<<<<<
 * 
 *     def writeVariationsToAnnotations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 156, __pyx_L1_error)
  try {
    __pyx_t_1->updateTotalUncertainty();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 156, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":152
 *         return self.s1ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter1D.updateTotalUncertainty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":158
 *         return self.s1ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations, "Scatter1D.writeVariationsToAnnotations(self)\nNone -> None\n        Parse the variations and add them to the annotations.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations = {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("writeVariationsToAnnotations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "writeVariationsToAnnotations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations", 0);

  /* "include/Scatter1D.pyx":162
 *         Parse the variations and add them to the annotations.
 *         """
 *         return self.s1ptr().writeVariationsToAnnotations()             # <<<<<<<<<<<<<<
 * 
 *     def variations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 162, __pyx_L1_error)
  try {
    __pyx_t_1->writeVariationsToAnnotations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 162, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":158
 *         return self.s1ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter1D.writeVariationsToAnnotations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":164
 *         return self.s1ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_51variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_50variations, "Scatter1D.variations(self)\nNone -> vector[string]\n        Get the list of variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_51variations = {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_51variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_50variations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_51variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_50variations(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_50variations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  std::vector<std::string>  __pyx_v_vars;
  std::string __pyx_v_var;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  std::vector<std::string>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<std::string> ::iterator __pyx_t_4;
  std::string __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variations", 0);

  /* "include/Scatter1D.pyx":167
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 *         cdef vector[string] vars = self.s1ptr().variations()             # <<<<<<<<<<<<<<
 *         return [var for var in vars]
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 167, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->variations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 167, __pyx_L1_error)
  }
  __pyx_v_vars = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter1D.pyx":168
 *         Get the list of variations stored in the points of the Scatter"""
 *         cdef vector[string] vars = self.s1ptr().variations()
 *         return [var for var in vars]             # <<<<<<<<<<<<<<
 * 
 *     def rmVariations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_vars.begin();
  for (;;) {
    if (!(__pyx_t_4 != __pyx_v_vars.end())) break;
    __pyx_t_5 = *__pyx_t_4;
    ++__pyx_t_4;
    __pyx_v_var = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_var); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(4, 168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":164
 *         return self.s1ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter1D.variations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":170
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_53rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_52rmVariations, "Scatter1D.rmVariations(self)\nNone -> None\n        Remove the variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_53rmVariations = {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_53rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_52rmVariations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_53rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_52rmVariations(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_52rmVariations(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter1D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmVariations", 0);

  /* "include/Scatter1D.pyx":173
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 *         return self.s1ptr().rmVariations()             # <<<<<<<<<<<<<<
 * 
 *     def hasValidErrorBreakdown(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter1D_s1ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter1D *)NULL))) __PYX_ERR(4, 173, __pyx_L1_error)
  try {
    __pyx_t_1->rmVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(4, 173, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":170
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter1D.rmVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":175
 *         return self.s1ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown, "Scatter1D.hasValidErrorBreakdown(self)\n\n        Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown = {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasValidErrorBreakdown", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasValidErrorBreakdown", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_v_counter = NULL;
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_v_binErrs = NULL;
  PyObject *__pyx_v_binTotal = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_sys = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown", 0);

  /* "include/Scatter1D.pyx":179
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 *         """
 *         counter = -1             # <<<<<<<<<<<<<<
 *         for p in self.points():
 *             counter += 1
 */
  __Pyx_INCREF(__pyx_int_neg_1);
  __pyx_v_counter = __pyx_int_neg_1;

  /* "include/Scatter1D.pyx":180
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 180, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(4, 180, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 180, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 180, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter1D.pyx":181
 *         counter = -1
 *         for p in self.points():
 *             counter += 1             # <<<<<<<<<<<<<<
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 */
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_counter, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_counter, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter1D.pyx":182
 *         for p in self.points():
 *             counter += 1
 *             binErrs = p.errMap()             # <<<<<<<<<<<<<<
 *             if len(binErrs) < 2:
 *                 return False
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_errMap); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_7, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_binErrs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter1D.pyx":183
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    __pyx_t_8 = PyObject_Length(__pyx_v_binErrs); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(4, 183, __pyx_L1_error)
    __pyx_t_9 = (__pyx_t_8 < 2);
    if (__pyx_t_9) {

      /* "include/Scatter1D.pyx":184
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 *                 return False             # <<<<<<<<<<<<<<
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter1D.pyx":183
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    }

    /* "include/Scatter1D.pyx":185
 *             if len(binErrs) < 2:
 *                 return False
 *             binTotal = [0.,0.]             # <<<<<<<<<<<<<<
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 */
    __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 185, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_);
    __Pyx_XDECREF_SET(__pyx_v_binTotal, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "include/Scatter1D.pyx":186
 *                 return False
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():             # <<<<<<<<<<<<<<
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 */
    __pyx_t_8 = 0;
    if (unlikely(__pyx_v_binErrs == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
      __PYX_ERR(4, 186, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_binErrs, 0, __pyx_n_s_iteritems, (&__pyx_t_10), (&__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
    while (1) {
      __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_8, &__pyx_t_3, &__pyx_t_7, NULL, __pyx_t_4);
      if (unlikely(__pyx_t_11 == 0)) break;
      if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(4, 186, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_sys, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_err, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "include/Scatter1D.pyx":187
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5             # <<<<<<<<<<<<<<
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 */
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_err, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 0, __pyx_t_12, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(4, 187, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "include/Scatter1D.pyx":188
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5             # <<<<<<<<<<<<<<
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 */
      __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_7 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_err, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 1, __pyx_t_3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(4, 188, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "include/Scatter1D.pyx":189
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(4, 189, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_13) {
    } else {
      __pyx_t_9 = __pyx_t_13;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(4, 189, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = __pyx_t_13;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_9) {

      /* "include/Scatter1D.pyx":190
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter1D.pyx":189
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    }

    /* "include/Scatter1D.pyx":180
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Scatter1D.pyx":191
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     # # TODO: remove?
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":175
 *         return self.s1ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.Scatter1D.hasValidErrorBreakdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_counter);
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XDECREF(__pyx_v_binErrs);
  __Pyx_XDECREF(__pyx_v_binTotal);
  __Pyx_XDECREF(__pyx_v_sys);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":202
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_57_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_56_mknp, "Scatter1D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_57_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_57_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_56_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_57_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(4, 202, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(4, 202, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(4, 202, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_56_mknp(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_56_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Scatter1D.pyx":203
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter1D.pyx":204
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 204, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Scatter1D.pyx":205
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 205, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 205, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Scatter1D.pyx":203
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter1D.pyx":206
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(4, 206, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter1D.pyx":207
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter1D.pyx":203
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Scatter1D.pyx":202
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter1D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":209
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_59xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_58xVals, "Scatter1D.xVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_59xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_59xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_58xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_59xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_58xVals(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_58xVals(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Scatter1D.pyx":210
 * 
 *     def xVals(self):
 *         return self._mknp([p.x() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 210, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 210, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 210, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 210, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 210, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 210, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 210, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":209
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter1D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":212
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_61xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_60xMins, "Scatter1D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_61xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_61xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_60xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_61xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_60xMins(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_60xMins(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Scatter1D.pyx":214
 *     def xMins(self):
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 214, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 214, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 214, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 214, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 214, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 214, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 214, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 214, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":212
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter1D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":216
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_63xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_62xMaxs, "Scatter1D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_63xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_63xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_62xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_63xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_62xMaxs(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_62xMaxs(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Scatter1D.pyx":218
 *     def xMaxs(self):
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     # TODO: xErrs
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(4, 218, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 218, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(4, 218, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(4, 218, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(4, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(4, 218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":216
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter1D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":222
 *     # TODO: xErrs
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_65xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_64xMin, "Scatter1D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_65xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_65xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_64xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_65xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_64xMin(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_64xMin(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Scatter1D.pyx":224
 *     def xMin(self):
 *         """Lowest x value."""
 *         return min(self.xMins())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":222
 *     # TODO: xErrs
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter1D.pyx":226
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_67xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_66xMax, "Scatter1D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_67xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_67xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_66xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_67xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_66xMax(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_66xMax(struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Scatter1D.pyx":228
 *     def xMax(self):
 *         """Highest x value."""
 *         return max(self.xMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter1D.pyx":226
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter1D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_69__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_68__reduce_cython__, "Scatter1D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_69__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_69__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_68__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_69__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_68__reduce_cython__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_68__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_71__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter1D_70__setstate_cython__, "Scatter1D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter1D_71__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_71__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_70__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter1D_71__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter1D_70__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter1D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter1D_70__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter1D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter1D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter2D* s2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter2D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Scatter2D *__pyx_f_4yoda_4core_9Scatter2D_s2ptr(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  YODA::Scatter2D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("s2ptr", 0);

  /* "include/Scatter2D.pyx":19
 * 
 *     cdef inline c.Scatter2D* s2ptr(self) except NULL:
 *         return <c.Scatter2D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, *args, **kwargs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(29, 19, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter2D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter2D* s2ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter2D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.s2ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":21
 *         return <c.Scatter2D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Scatter2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Scatter2D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D___init__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_9Scatter2D___init__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Scatter2D.pyx":22
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__init_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":21
 *         return <c.Scatter2D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_2__init_2, "Scatter2D.__init_2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_3_Scatter2D__init_2 = {"_Scatter2D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_2__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__init_2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 24, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter2D__init_2") < 0)) __PYX_ERR(29, 24, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__init_2", 0, 0, 2, __pyx_nargs); __PYX_ERR(29, 24, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_2__init_2(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Scatter2D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__init_2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Scatter2D.pyx":25
 * 
 *     def __init_2(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Scatter2D.pyx":26
 *     def __init_2(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Scatter2D.pyx":27
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_3(self, points, path="", title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 27, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 27, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Scatter2D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 27, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Scatter2D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_4__init_3, "Scatter2D.__init_3(self, points, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_5_Scatter2D__init_3 = {"_Scatter2D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_4__init_3};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_points = 0;
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__init_3 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[3] = {0,0,0};
    values[1] = ((PyObject *)__pyx_kp_s__2);
    values[2] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_points)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 29, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 29, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter2D__init_3") < 0)) __PYX_ERR(29, 29, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_points = values[0];
    __pyx_v_path = values[1];
    __pyx_v_title = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__init_3", 0, 1, 3, __pyx_nargs); __PYX_ERR(29, 29, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_4__init_3(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_points, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__init_3", 0);

  /* "include/Scatter2D.pyx":30
 * 
 *     def __init_3(self, points, path="", title=""):
 *         self.__init_2(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_path, __pyx_v_title};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":31
 *     def __init_3(self, points, path="", title=""):
 *         self.__init_2(path, title)
 *         self.addPoints(points)             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_points};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter2D.
 *         Clone this Scatter2D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_6clone, "Scatter2D.clone(self)\n() -> Scatter2D.\n        Clone this Scatter2D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_7clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_6clone};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_6clone(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_6clone(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  YODA::Scatter2D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Scatter2D.pyx":36
 *         """() -> Scatter2D.
 *         Clone this Scatter2D."""
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 36, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 36, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter2D.
 *         Clone this Scatter2D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":38
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_9__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_9__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_8__repr__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Scatter2D.pyx":39
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_points, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":38
 *         return cutil.new_owned_cls(Scatter2D, self.s2ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter2D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_10reset, "Scatter2D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_11reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_10reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_10reset(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_10reset(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Scatter2D.pyx":44
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 44, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 44, __pyx_L1_error)
  }

  /* "include/Scatter2D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_12numPoints, "Scatter2D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_13numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_12numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numPoints", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numPoints", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_12numPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numPoints", 0);

  /* "include/Scatter2D.pyx":50
 *         """() -> int
 *         Number of points in this scatter."""
 *         return self.s2ptr().numPoints()             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 50, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numPoints();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 50, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.numPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":52
 *         return self.s2ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter2D_15__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter2D_15__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_14__len__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter2D_14__len__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Scatter2D.pyx":53
 * 
 *     def __len__(self):
 *         return self.numPoints()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":52
 *         return self.s2ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_16points, "Scatter2D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_17points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_16points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("points", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "points", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_16points(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_16points(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("points", 0);

  /* "include/Scatter2D.pyx":58
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 58, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(29, 58, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(29, 58, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 58, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_i};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(29, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Scatter2D.points", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_18point, "Scatter2D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_19point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_18point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_i;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "point") < 0)) __PYX_ERR(29, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 60, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 60, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_18point(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_18point(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("point", 0);

  /* "include/Scatter2D.pyx":62
 *     def point(self, size_t i):
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 62, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), (&__pyx_t_1->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter2D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":64
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_20__getitem__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter2D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Scatter2D.pyx":65
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(29, 65, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(29, 65, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/Scatter2D.pyx":66
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 66, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), (&__pyx_t_8->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":64
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_22addPoint, "Scatter2D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point2D object, or the\n        four args: x, y, xerrs=0, yerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_23addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_22addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "addPoint", 1))) return NULL;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_22addPoint(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 0);

  /* "include/Scatter2D.pyx":75
 *         four args: x, y, xerrs=0, yerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter2D.pyx":76
 *         """
 *         try:
 *             self.__addPoint_point(*args, **kwargs)             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__addPoint_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "include/Scatter2D.pyx":75
 *         four args: x, y, xerrs=0, yerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter2D.pyx":77
 *         try:
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter2D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(29, 77, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);

      /* "include/Scatter2D.pyx":78
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):
 */
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__addPoint_explicit); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_v_args, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter2D.pyx":75
 *         four args: x, y, xerrs=0, yerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter2D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_24__addPoint_explicit, "Scatter2D.__addPoint_explicit(self, x, y, xerrs=0, yerrs=0)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit = {"_Scatter2D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_24__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_xerrs = 0;
  PyObject *__pyx_v_yerrs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_explicit (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_xerrs,&__pyx_n_s_yerrs,0};
    PyObject* values[4] = {0,0,0,0};
    values[2] = ((PyObject *)__pyx_int_0);
    values[3] = ((PyObject *)__pyx_int_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 80, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 80, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Scatter2D__addPoint_explicit", 0, 2, 4, 1); __PYX_ERR(29, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yerrs);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 80, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter2D__addPoint_explicit") < 0)) __PYX_ERR(29, 80, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_xerrs = values[2];
    __pyx_v_yerrs = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__addPoint_explicit", 0, 2, 4, __pyx_nargs); __PYX_ERR(29, 80, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_24__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_xerrs, __pyx_v_yerrs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_explicit", 0);

  /* "include/Scatter2D.pyx":81
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_point(self, Point2D p):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter2D__addPoint_point); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
  __Pyx_INCREF(__pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_y);
  __Pyx_INCREF(__pyx_v_xerrs);
  __Pyx_GIVEREF(__pyx_v_xerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_xerrs);
  __Pyx_INCREF(__pyx_v_yerrs);
  __Pyx_GIVEREF(__pyx_v_yerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_yerrs);
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point2D), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":83
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_point, "Scatter2D.__addPoint_point(self, Point2D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point = {"_Scatter2D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_p = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter2D__addPoint_point") < 0)) __PYX_ERR(29, 83, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_p = ((struct __pyx_obj_4yoda_4core_Point2D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter2D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 83, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p), __pyx_ptype_4yoda_4core_Point2D, 1, "p", 0))) __PYX_ERR(29, 83, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_26__addPoint_point(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_p);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point2D *__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  YODA::Point2D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter2D__addPoint_point", 0);

  /* "include/Scatter2D.pyx":84
 * 
 *     def __addPoint_point(self, Point2D p):
 *         self.s2ptr().addPoint(p.p2ptr()[0])             # <<<<<<<<<<<<<<
 * 
 *     def addPoints(self, iterable):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 84, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point2D *)__pyx_v_p->__pyx_base.__pyx_base.__pyx_vtab)->p2ptr(__pyx_v_p); if (unlikely(__pyx_t_2 == ((YODA::Point2D *)NULL))) __PYX_ERR(29, 84, __pyx_L1_error)
  __pyx_t_1->addPoint((__pyx_t_2[0]));

  /* "include/Scatter2D.pyx":83
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._Scatter2D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":86
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_28addPoints, "Scatter2D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_29addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_28addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_iterable = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_iterable)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 86, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPoints") < 0)) __PYX_ERR(29, 86, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_iterable = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 86, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_28addPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_iterable) {
  PyObject *__pyx_v_row = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 0);

  /* "include/Scatter2D.pyx":88
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  if (likely(PyList_CheckExact(__pyx_v_iterable)) || PyTuple_CheckExact(__pyx_v_iterable)) {
    __pyx_t_1 = __pyx_v_iterable; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 88, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(29, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(29, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 88, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Scatter2D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "include/Scatter2D.pyx":90
 *         for row in iterable:
 *           try:
 *             self.addPoint(*row)             # <<<<<<<<<<<<<<
 *           except TypeError:
 *             self.addPoint(row)
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "include/Scatter2D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "include/Scatter2D.pyx":91
 *           try:
 *             self.addPoint(*row)
 *           except TypeError:             # <<<<<<<<<<<<<<
 *             self.addPoint(row)
 * 
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("yoda.core.Scatter2D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(29, 91, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/Scatter2D.pyx":92
 *             self.addPoint(*row)
 *           except TypeError:
 *             self.addPoint(row)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoint(self, idx):
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 92, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_10 = 1;
          }
        }
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(29, 92, __pyx_L7_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L6_exception_handled;
      }
      goto __pyx_L7_except_error;

      /* "include/Scatter2D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_L12_try_end:;
    }

    /* "include/Scatter2D.pyx":88
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":86
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter2D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_30rmPoint, "Scatter2D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_31rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_30rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idx)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 94, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoint") < 0)) __PYX_ERR(29, 94, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idx = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 94, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_30rmPoint(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idx) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  size_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoint", 0);

  /* "include/Scatter2D.pyx":95
 * 
 *     def rmPoint(self, idx):
 *         self.s2ptr().rmPoint(idx)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoints(self, idxs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 95, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 95, __pyx_L1_error)
  __pyx_t_1->rmPoint(__pyx_t_2);

  /* "include/Scatter2D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":97
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_32rmPoints, "Scatter2D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_33rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_32rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idxs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idxs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 97, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoints") < 0)) __PYX_ERR(29, 97, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idxs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 97, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_32rmPoints(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_idxs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  std::vector<size_t>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoints", 0);

  /* "include/Scatter2D.pyx":98
 * 
 *     def rmPoints(self, idxs):
 *         self.s2ptr().rmPoints(idxs)             # <<<<<<<<<<<<<<
 * 
 *     def combineWith(self, others):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 98, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 98, __pyx_L1_error)
  __pyx_t_1->rmPoints(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2));

  /* "include/Scatter2D.pyx":97
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":100
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_34combineWith, "Scatter2D.combineWith(self, others)\nTry to add points from other Scatter2Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_35combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_34combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_others = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_others)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 100, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "combineWith") < 0)) __PYX_ERR(29, 100, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_others = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 100, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_34combineWith(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_others) {
  struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_other = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  YODA::Scatter2D *__pyx_t_5;
  YODA::Scatter2D *__pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("combineWith", 0);

  /* "include/Scatter2D.pyx":103
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter2D?
 *             other = others
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter2D.pyx":105
 *         try:
 *             # Can we type it as a Scatter2D?
 *             other = others             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             # Could be an iterable...
 */
      if (!(likely(((__pyx_v_others) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_others, __pyx_ptype_4yoda_4core_Scatter2D))))) __PYX_ERR(29, 105, __pyx_L3_error)
      __pyx_t_4 = __pyx_v_others;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/Scatter2D.pyx":103
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter2D?
 *             other = others
 */
    }

    /* "include/Scatter2D.pyx":111
 *                 self.s2ptr().combineWith(deref(other.s2ptr()))
 *         else:
 *             self.s2ptr().combineWith(deref(other.s2ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 111, __pyx_L5_except_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 111, __pyx_L5_except_error)
      __pyx_t_5->combineWith((*__pyx_t_6));
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/Scatter2D.pyx":106
 *             # Can we type it as a Scatter2D?
 *             other = others
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             # Could be an iterable...
 *             for other in others:
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter2D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(29, 106, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/Scatter2D.pyx":108
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s2ptr().combineWith(deref(other.s2ptr()))
 *         else:
 */
      if (likely(PyList_CheckExact(__pyx_v_others)) || PyTuple_CheckExact(__pyx_v_others)) {
        __pyx_t_10 = __pyx_v_others; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0;
        __pyx_t_12 = NULL;
      } else {
        __pyx_t_11 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_others); if (unlikely(!__pyx_t_10)) __PYX_ERR(29, 108, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 108, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(29, 108, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(29, 108, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(29, 108, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(29, 108, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          }
        } else {
          __pyx_t_13 = __pyx_t_12(__pyx_t_10);
          if (unlikely(!__pyx_t_13)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(29, 108, __pyx_L5_except_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_13);
        }
        if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_4yoda_4core_Scatter2D))))) __PYX_ERR(29, 108, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/Scatter2D.pyx":109
 *             # Could be an iterable...
 *             for other in others:
 *                 self.s2ptr().combineWith(deref(other.s2ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             self.s2ptr().combineWith(deref(other.s2ptr()))
 */
        __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 109, __pyx_L5_except_error)
        __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 109, __pyx_L5_except_error)
        __pyx_t_6->combineWith((*__pyx_t_5));

        /* "include/Scatter2D.pyx":108
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s2ptr().combineWith(deref(other.s2ptr()))
 *         else:
 */
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter2D.pyx":103
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter2D?
 *             other = others
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter2D.pyx":100
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter2D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_other);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_36mkScatter, "Scatter2D.mkScatter(self)\nNone -> Scatter2D.\n        Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,\n        even if it already is a scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_37mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_36mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mkScatter", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mkScatter", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_36mkScatter(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  YODA::Scatter2D __pyx_v_s2;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  YODA::Scatter2D __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Scatter2D.pyx":118
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Scatter2D(deref(self.s2ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 118, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::mkScatter((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 118, __pyx_L1_error)
  }
  __pyx_v_s2 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter2D.pyx":119
 *         even if it already is a scatter."""
 *         cdef c.Scatter2D s2 = c.mkScatter_Scatter2D(deref(self.s2ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s2.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_s2.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 119, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_38scaleX, "Scatter2D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_39scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_38scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 122, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(29, 122, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 122, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_38scaleX(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Scatter2D.pyx":125
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s2ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 125, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 125, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 125, __pyx_L1_error)
  }

  /* "include/Scatter2D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":127
 *         self.s2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_41scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_40scaleY, "Scatter2D.scaleY(self, a)\n(float) -> None\n        Scale the y values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_41scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_41scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_40scaleY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_41scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 127, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(29, 127, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 127, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_40scaleY(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_40scaleY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Scatter2D.pyx":130
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 *         self.s2ptr().scaleY(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXY(self, ax=1.0, ay=1.0):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 130, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 130, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 130, __pyx_L1_error)
  }

  /* "include/Scatter2D.pyx":127
 *         self.s2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":132
 *         self.s2ptr().scaleY(a)
 * 
 *     def scaleXY(self, ax=1.0, ay=1.0):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_43scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_42scaleXY, "Scatter2D.scaleXY(self, ax=1.0, ay=1.0)\n(float=1, float=1) -> None\n        Scale the values and errors of the points in this scatter by factors ax, ay.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_43scaleXY = {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_43scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_42scaleXY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_43scaleXY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ax = 0;
  PyObject *__pyx_v_ay = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ax,&__pyx_n_s_ay,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_float_1_0);
    values[1] = ((PyObject *)__pyx_float_1_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ax);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 132, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ay);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 132, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXY") < 0)) __PYX_ERR(29, 132, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ax = values[0];
    __pyx_v_ay = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXY", 0, 0, 2, __pyx_nargs); __PYX_ERR(29, 132, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_42scaleXY(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_ax, __pyx_v_ay);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_42scaleXY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXY", 0);

  /* "include/Scatter2D.pyx":135
 *         """(float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay."""
 *         self.s2ptr().scaleXY(ax, ay)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 135, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ax); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 135, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ay); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 135, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXY(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 135, __pyx_L1_error)
  }

  /* "include/Scatter2D.pyx":132
 *         self.s2ptr().scaleY(a)
 * 
 *     def scaleXY(self, ax=1.0, ay=1.0):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scaleXY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":137
 *         self.s2ptr().scaleXY(ax, ay)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_45scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_44scale, "Scatter2D.scale(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_45scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_45scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_44scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_45scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_scale = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 137, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 137, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(29, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scale") < 0)) __PYX_ERR(29, 137, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_scale = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(29, 137, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_44scale(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_44scale(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 0);

  /* "include/Scatter2D.pyx":140
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s2ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 140, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(29, 140, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 140, __pyx_L1_error)
  }

  /* "include/Scatter2D.pyx":137
 *         self.s2ptr().scaleXY(ax, ay)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":143
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_47transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_46transformX, "Scatter2D.transformX(self, f)\n(fn) -> None\n        Transform the x values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_47transformX = {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_47transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_46transformX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_47transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 143, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformX") < 0)) __PYX_ERR(29, 143, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformX", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 143, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_46transformX(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_46transformX(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter2D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformX", 0);

  /* "include/Scatter2D.pyx":146
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":147
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter2D.pyx":148
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 148, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 148, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 148, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 148, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 148, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter2D.pyx":147
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter2D.pyx":149
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter2D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(29, 149, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter2D.pyx":150
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 150, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(29, 150, __pyx_L5_except_error)
    }

    /* "include/Scatter2D.pyx":147
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter2D.pyx":151
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 151, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter2D.pyx":152
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 *     def transformY(self, f):
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 152, __pyx_L1_error)
  YODA::transformX((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter2D.pyx":143
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter2D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":154
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_49transformY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_48transformY, "Scatter2D.transformY(self, f)\n(fn) -> None\n        Transform the y values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_49transformY = {"transformY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_49transformY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_48transformY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_49transformY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 154, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformY") < 0)) __PYX_ERR(29, 154, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformY", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 154, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_48transformY(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_48transformY(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter2D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformY", 0);

  /* "include/Scatter2D.pyx":157
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":158
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter2D.pyx":159
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 159, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 159, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 159, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 159, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 159, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter2D.pyx":158
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter2D.pyx":160
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter2D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(29, 160, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter2D.pyx":161
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(29, 161, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(29, 161, __pyx_L5_except_error)
    }

    /* "include/Scatter2D.pyx":158
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter2D.pyx":162
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 162, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(29, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter2D.pyx":163
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 *     def parseVariations(self):
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 163, __pyx_L1_error)
  YODA::transformY((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter2D.pyx":154
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter2D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":165
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_51parseVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_50parseVariations, "Scatter2D.parseVariations(self)\nNone -> None\n        Parse the YAML which contains the variations stored in the points of the Scatter.\n        Only needs to be done once!");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_51parseVariations = {"parseVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_51parseVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_50parseVariations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_51parseVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("parseVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("parseVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "parseVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_50parseVariations(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_50parseVariations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("parseVariations", 0);

  /* "include/Scatter2D.pyx":169
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 *         Only needs to be done once!"""
 *         return self.s2ptr().parseVariations()             # <<<<<<<<<<<<<<
 * 
 *     def updateTotalUncertainty(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 169, __pyx_L1_error)
  try {
    __pyx_t_1->parseVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 169, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":165
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter2D.parseVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":171
 *         return self.s2ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_53updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_52updateTotalUncertainty, "Scatter2D.updateTotalUncertainty(self)\nNone -> None\n        Sum the error in the error map in quadrature and update the total (\"\") uncertainty.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_53updateTotalUncertainty = {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_53updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_52updateTotalUncertainty};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_53updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("updateTotalUncertainty (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("updateTotalUncertainty", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "updateTotalUncertainty", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_52updateTotalUncertainty(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_52updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("updateTotalUncertainty", 0);

  /* "include/Scatter2D.pyx":175
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 *         """
 *         return self.s2ptr().updateTotalUncertainty()             # <<<<<<<<<<<<<<
 * 
 *     def writeVariationsToAnnotations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 175, __pyx_L1_error)
  try {
    __pyx_t_1->updateTotalUncertainty();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 175, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":171
 *         return self.s2ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter2D.updateTotalUncertainty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":177
 *         return self.s2ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations, "Scatter2D.writeVariationsToAnnotations(self)\nNone -> None\n        Parse the variations and add them to the annotations.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations = {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("writeVariationsToAnnotations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "writeVariationsToAnnotations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations", 0);

  /* "include/Scatter2D.pyx":181
 *         Parse the variations and add them to the annotations.
 *         """
 *         return self.s2ptr().writeVariationsToAnnotations()             # <<<<<<<<<<<<<<
 * 
 *     def variations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 181, __pyx_L1_error)
  try {
    __pyx_t_1->writeVariationsToAnnotations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 181, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":177
 *         return self.s2ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter2D.writeVariationsToAnnotations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":183
 *         return self.s2ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_57variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_56variations, "Scatter2D.variations(self)\nNone -> vector[string]\n        Get the list of variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_57variations = {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_57variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_56variations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_57variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_56variations(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_56variations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  std::vector<std::string>  __pyx_v_vars;
  std::string __pyx_v_var;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  std::vector<std::string>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<std::string> ::iterator __pyx_t_4;
  std::string __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variations", 0);

  /* "include/Scatter2D.pyx":186
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 *         vars = self.s2ptr().variations()             # <<<<<<<<<<<<<<
 *         return [var for var in vars]
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 186, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->variations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 186, __pyx_L1_error)
  }
  __pyx_v_vars = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter2D.pyx":187
 *         Get the list of variations stored in the points of the Scatter"""
 *         vars = self.s2ptr().variations()
 *         return [var for var in vars]             # <<<<<<<<<<<<<<
 * 
 *     def rmVariations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_vars.begin();
  for (;;) {
    if (!(__pyx_t_4 != __pyx_v_vars.end())) break;
    __pyx_t_5 = *__pyx_t_4;
    ++__pyx_t_4;
    __pyx_v_var = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_var); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(29, 187, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":183
 *         return self.s2ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter2D.variations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":189
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_59rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_58rmVariations, "Scatter2D.rmVariations(self)\nNone -> None\n        Remove the variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_59rmVariations = {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_59rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_58rmVariations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_59rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_58rmVariations(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_58rmVariations(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter2D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmVariations", 0);

  /* "include/Scatter2D.pyx":192
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 *         return self.s2ptr().rmVariations()             # <<<<<<<<<<<<<<
 * 
 *     def _mknp(self, xs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 192, __pyx_L1_error)
  try {
    __pyx_t_1->rmVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 192, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":189
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter2D.rmVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":194
 *         return self.s2ptr().rmVariations()
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_61_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_60_mknp, "Scatter2D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_61_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_61_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_60_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_61_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 194, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(29, 194, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(29, 194, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_60_mknp(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_60_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Scatter2D.pyx":195
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter2D.pyx":196
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 196, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Scatter2D.pyx":197
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 197, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 197, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Scatter2D.pyx":195
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter2D.pyx":198
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(29, 198, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter2D.pyx":199
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter2D.pyx":195
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Scatter2D.pyx":194
 *         return self.s2ptr().rmVariations()
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter2D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":202
 * 
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_63covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_62covarianceMatrix, "Scatter2D.covarianceMatrix(self, ignoreOffDiagonalTerms=False)\nbool -> vector[vector[float]]\n        Construct the covariance matrix");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_63covarianceMatrix = {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_63covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_62covarianceMatrix};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_63covarianceMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ignoreOffDiagonalTerms = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covarianceMatrix (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignoreOffDiagonalTerms,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ignoreOffDiagonalTerms);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(29, 202, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "covarianceMatrix") < 0)) __PYX_ERR(29, 202, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ignoreOffDiagonalTerms = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covarianceMatrix", 0, 0, 1, __pyx_nargs); __PYX_ERR(29, 202, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_62covarianceMatrix(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v_ignoreOffDiagonalTerms);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_62covarianceMatrix(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  YODA::Scatter2D *__pyx_t_3;
  bool __pyx_t_4;
  std::vector<std::vector<double> >  __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covarianceMatrix", 0);

  /* "include/Scatter2D.pyx":205
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 *         return self._mknp(self.s2ptr().covarianceMatrix(ignoreOffDiagonalTerms))             # <<<<<<<<<<<<<<
 * 
 *     # # TODO: remove?
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __pyx_f_4yoda_4core_9Scatter2D_s2ptr(__pyx_v_self); if (unlikely(__pyx_t_3 == ((YODA::Scatter2D *)NULL))) __PYX_ERR(29, 205, __pyx_L1_error)
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignoreOffDiagonalTerms); if (unlikely((__pyx_t_4 == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(29, 205, __pyx_L1_error)
  try {
    __pyx_t_5 = __pyx_t_3->covarianceMatrix(__pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(29, 205, __pyx_L1_error)
  }
  __pyx_t_6 = __pyx_convert_vector_to_py_std_3a__3a_vector_3c_double_3e___(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = NULL;
  __pyx_t_8 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_7)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_7);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_8 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_6};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":202
 * 
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core.Scatter2D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":215
 *     #     return cutil.new_owned_cls(Scatter2D, c.Scatter2D_sub_Scatter2D(self.s2ptr(), other.s2ptr()))
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown, "Scatter2D.hasValidErrorBreakdown(self)\n\n        Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown = {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasValidErrorBreakdown", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasValidErrorBreakdown", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_counter = NULL;
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_v_binErrs = NULL;
  PyObject *__pyx_v_binTotal = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_sys = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown", 0);

  /* "include/Scatter2D.pyx":219
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 *         """
 *         counter = -1             # <<<<<<<<<<<<<<
 *         for p in self.points():
 *             counter += 1
 */
  __Pyx_INCREF(__pyx_int_neg_1);
  __pyx_v_counter = __pyx_int_neg_1;

  /* "include/Scatter2D.pyx":220
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 220, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(29, 220, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(29, 220, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 220, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter2D.pyx":221
 *         counter = -1
 *         for p in self.points():
 *             counter += 1             # <<<<<<<<<<<<<<
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 */
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_counter, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 221, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_counter, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter2D.pyx":222
 *         for p in self.points():
 *             counter += 1
 *             binErrs = p.errMap()             # <<<<<<<<<<<<<<
 *             if len(binErrs) < 2:
 *                 return False
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_errMap); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 222, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_7, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_binErrs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter2D.pyx":223
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    __pyx_t_8 = PyObject_Length(__pyx_v_binErrs); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(29, 223, __pyx_L1_error)
    __pyx_t_9 = (__pyx_t_8 < 2);
    if (__pyx_t_9) {

      /* "include/Scatter2D.pyx":224
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 *                 return False             # <<<<<<<<<<<<<<
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter2D.pyx":223
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    }

    /* "include/Scatter2D.pyx":225
 *             if len(binErrs) < 2:
 *                 return False
 *             binTotal = [0.,0.]             # <<<<<<<<<<<<<<
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 */
    __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 225, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_);
    __Pyx_XDECREF_SET(__pyx_v_binTotal, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "include/Scatter2D.pyx":226
 *                 return False
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():             # <<<<<<<<<<<<<<
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 */
    __pyx_t_8 = 0;
    if (unlikely(__pyx_v_binErrs == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
      __PYX_ERR(29, 226, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_binErrs, 0, __pyx_n_s_iteritems, (&__pyx_t_10), (&__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 226, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
    while (1) {
      __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_8, &__pyx_t_3, &__pyx_t_7, NULL, __pyx_t_4);
      if (unlikely(__pyx_t_11 == 0)) break;
      if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(29, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_sys, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_err, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "include/Scatter2D.pyx":227
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5             # <<<<<<<<<<<<<<
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 */
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_err, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 0, __pyx_t_12, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(29, 227, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "include/Scatter2D.pyx":228
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5             # <<<<<<<<<<<<<<
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 */
      __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_7 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_err, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 1, __pyx_t_3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(29, 228, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "include/Scatter2D.pyx":229
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(29, 229, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_13) {
    } else {
      __pyx_t_9 = __pyx_t_13;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 229, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(29, 229, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = __pyx_t_13;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_9) {

      /* "include/Scatter2D.pyx":230
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter2D.pyx":229
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    }

    /* "include/Scatter2D.pyx":220
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Scatter2D.pyx":231
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 *         return True             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":215
 *     #     return cutil.new_owned_cls(Scatter2D, c.Scatter2D_sub_Scatter2D(self.s2ptr(), other.s2ptr()))
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.Scatter2D.hasValidErrorBreakdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_counter);
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XDECREF(__pyx_v_binErrs);
  __Pyx_XDECREF(__pyx_v_binTotal);
  __Pyx_XDECREF(__pyx_v_sys);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":234
 * 
 * 
 *     def correlationMatrix(self):             # <<<<<<<<<<<<<<
 *         """
 *         `covMatrix` numpy matrix
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_67correlationMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_66correlationMatrix, "Scatter2D.correlationMatrix(self)\n\n        `covMatrix` numpy matrix\n         Convert a covariance matrix to a correlation matrix (ie normalise entry in i,j by uncertainty of bin i * uncertainty in bin j)\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_67correlationMatrix = {"correlationMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_67correlationMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_66correlationMatrix};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_67correlationMatrix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("correlationMatrix (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("correlationMatrix", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "correlationMatrix", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_66correlationMatrix(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_66correlationMatrix(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_covMatrix = NULL;
  Py_ssize_t __pyx_v_nbins;
  PyObject *__pyx_v_corr = NULL;
  Py_ssize_t __pyx_v_i;
  PyObject *__pyx_v_sigma_i = NULL;
  Py_ssize_t __pyx_v_j;
  PyObject *__pyx_v_sigma_j = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("correlationMatrix", 0);

  /* "include/Scatter2D.pyx":239
 *          Convert a covariance matrix to a correlation matrix (ie normalise entry in i,j by uncertainty of bin i * uncertainty in bin j)
 *         """
 *         covMatrix = self.covarianceMatrix()             # <<<<<<<<<<<<<<
 *         nbins = len(covMatrix)
 *         corr = [[0 for i in range(nbins)] for j in range (nbins)]
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_covarianceMatrix); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 239, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_covMatrix = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":240
 *         """
 *         covMatrix = self.covarianceMatrix()
 *         nbins = len(covMatrix)             # <<<<<<<<<<<<<<
 *         corr = [[0 for i in range(nbins)] for j in range (nbins)]
 *         for i in range(nbins):
 */
  __pyx_t_5 = PyObject_Length(__pyx_v_covMatrix); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(29, 240, __pyx_L1_error)
  __pyx_v_nbins = __pyx_t_5;

  /* "include/Scatter2D.pyx":241
 *         covMatrix = self.covarianceMatrix()
 *         nbins = len(covMatrix)
 *         corr = [[0 for i in range(nbins)] for j in range (nbins)]             # <<<<<<<<<<<<<<
 *         for i in range(nbins):
 *             sigma_i = covMatrix[i][i]
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 241, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __pyx_v_nbins;
  __pyx_t_6 = __pyx_t_5;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_j = __pyx_t_7;
    __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 241, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __pyx_v_nbins;
    __pyx_t_9 = __pyx_t_8;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_v_i = __pyx_t_10;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_int_0))) __PYX_ERR(29, 241, __pyx_L1_error)
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(29, 241, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_corr = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/Scatter2D.pyx":242
 *         nbins = len(covMatrix)
 *         corr = [[0 for i in range(nbins)] for j in range (nbins)]
 *         for i in range(nbins):             # <<<<<<<<<<<<<<
 *             sigma_i = covMatrix[i][i]
 *             for j in range(nbins):
 */
  __pyx_t_5 = __pyx_v_nbins;
  __pyx_t_6 = __pyx_t_5;
  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
    __pyx_v_i = __pyx_t_7;

    /* "include/Scatter2D.pyx":243
 *         corr = [[0 for i in range(nbins)] for j in range (nbins)]
 *         for i in range(nbins):
 *             sigma_i = covMatrix[i][i]             # <<<<<<<<<<<<<<
 *             for j in range(nbins):
 *                 sigma_j = covMatrix[j][j]
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_covMatrix, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 243, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_sigma_i, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "include/Scatter2D.pyx":244
 *         for i in range(nbins):
 *             sigma_i = covMatrix[i][i]
 *             for j in range(nbins):             # <<<<<<<<<<<<<<
 *                 sigma_j = covMatrix[j][j]
 *                 corr[i][j] = covMatrix[i][j] / (sigma_i * sigma_j)**0.5
 */
    __pyx_t_8 = __pyx_v_nbins;
    __pyx_t_9 = __pyx_t_8;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_v_j = __pyx_t_10;

      /* "include/Scatter2D.pyx":245
 *             sigma_i = covMatrix[i][i]
 *             for j in range(nbins):
 *                 sigma_j = covMatrix[j][j]             # <<<<<<<<<<<<<<
 *                 corr[i][j] = covMatrix[i][j] / (sigma_i * sigma_j)**0.5
 *         return self._mknp(corr)
 */
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_covMatrix, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_sigma_j, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "include/Scatter2D.pyx":246
 *             for j in range(nbins):
 *                 sigma_j = covMatrix[j][j]
 *                 corr[i][j] = covMatrix[i][j] / (sigma_i * sigma_j)**0.5             # <<<<<<<<<<<<<<
 *         return self._mknp(corr)
 * 
 */
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_covMatrix, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, __pyx_v_j, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Multiply(__pyx_v_sigma_i, __pyx_v_sigma_j); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyNumber_Power(__pyx_t_1, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_GetItemInt_List(__pyx_v_corr, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (unlikely((__Pyx_SetItemInt(__pyx_t_3, __pyx_v_j, __pyx_t_1, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0))) __PYX_ERR(29, 246, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    }
  }

  /* "include/Scatter2D.pyx":247
 *                 sigma_j = covMatrix[j][j]
 *                 corr[i][j] = covMatrix[i][j] / (sigma_i * sigma_j)**0.5
 *         return self._mknp(corr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_2)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_corr};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 247, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":234
 * 
 * 
 *     def correlationMatrix(self):             # <<<<<<<<<<<<<<
 *         """
 *         `covMatrix` numpy matrix
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.correlationMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_covMatrix);
  __Pyx_XDECREF(__pyx_v_corr);
  __Pyx_XDECREF(__pyx_v_sigma_i);
  __Pyx_XDECREF(__pyx_v_sigma_j);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":250
 * 
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_69xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_68xVals, "Scatter2D.xVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_69xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_69xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_68xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_69xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_68xVals(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_68xVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Scatter2D.pyx":251
 * 
 *     def xVals(self):
 *         return self._mknp([p.x() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 251, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 251, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 251, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 251, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 251, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 251, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 251, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 251, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":250
 * 
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":253
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_71xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_70xMins, "Scatter2D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_71xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_71xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_70xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_71xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_70xMins(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_70xMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Scatter2D.pyx":256
 *         """All x low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.xMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 256, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 256, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 256, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 256, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 256, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 256, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":253
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":258
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_73xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_72xMaxs, "Scatter2D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_73xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_73xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_72xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_73xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_72xMaxs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_72xMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Scatter2D.pyx":261
 *         """All x high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.xMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 261, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 261, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 261, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 261, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 261, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 261, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 261, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":258
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":263
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_75xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_74xErrs, "Scatter2D.xErrs(self)\nAll x error pairs");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_75xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_75xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_74xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_75xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_74xErrs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_74xErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Scatter2D.pyx":266
 *         """All x error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.xErrs() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xErrAvgs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 266, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 266, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 266, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 266, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 266, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 266, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xErrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 266, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":263
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":268
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All x average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_77xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_76xErrAvgs, "Scatter2D.xErrAvgs(self)\nAll x average errors");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_77xErrAvgs = {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_77xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_76xErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_77xErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrAvgs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrAvgs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrAvgs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_76xErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_76xErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrAvgs", 0);

  /* "include/Scatter2D.pyx":271
 *         """All x average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.xErrAvg() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 271, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 271, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 271, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 271, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 271, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xErrAvg); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 271, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 271, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":268
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All x average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xErrAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":273
 *         return self._mknp([p.xErrAvg() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_79xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_78xMin, "Scatter2D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_79xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_79xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_78xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_79xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_78xMin(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_78xMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Scatter2D.pyx":276
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return min(self.xMins())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":273
 *         return self._mknp([p.xErrAvg() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":278
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_81xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_80xMax, "Scatter2D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_81xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_81xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_80xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_81xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_80xMax(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_80xMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Scatter2D.pyx":281
 *         """Highest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return max(self.xMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":278
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":284
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_83yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_82yVals, "Scatter2D.yVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_83yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_83yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_82yVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_83yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_82yVals(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_82yVals(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Scatter2D.pyx":285
 * 
 *     def yVals(self):
 *         return self._mknp([p.y() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 285, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 285, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 285, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 285, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 285, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 285, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 285, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 285, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":284
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":287
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_85yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_84yMins, "Scatter2D.yMins(self)\nAll y low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_85yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_85yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_84yMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_85yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_84yMins(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_84yMins(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Scatter2D.pyx":290
 *         """All y low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.yMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 290, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 290, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 290, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 290, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 290, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 290, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":287
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":292
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_87yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_86yMaxs, "Scatter2D.yMaxs(self)\nAll y high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_87yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_87yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_86yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_87yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_86yMaxs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_86yMaxs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Scatter2D.pyx":295
 *         """All y high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.yMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 295, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 295, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 295, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 295, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 295, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 295, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":292
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":297
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_89yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_88yErrs, "Scatter2D.yErrs(self)\nAll y error pairs");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_89yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_89yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_88yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_89yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_88yErrs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_88yErrs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Scatter2D.pyx":300
 *         """All y error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.yErrs() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yErrAvgs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 300, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 300, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 300, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 300, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 300, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yErrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 300, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 300, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":297
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":302
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All y average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_91yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_90yErrAvgs, "Scatter2D.yErrAvgs(self)\nAll y average errors");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_91yErrAvgs = {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_91yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_90yErrAvgs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_91yErrAvgs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrAvgs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrAvgs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrAvgs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_90yErrAvgs(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_90yErrAvgs(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrAvgs", 0);

  /* "include/Scatter2D.pyx":305
 *         """All y average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return self._mknp([p.yErrAvg() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(29, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(29, 305, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 305, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 305, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(29, 305, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 305, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(29, 305, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yErrAvg); if (unlikely(!__pyx_t_6)) __PYX_ERR(29, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(29, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(29, 305, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":302
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All y average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yErrAvgs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":307
 *         return self._mknp([p.yErrAvg() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_93yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_92yMin, "Scatter2D.yMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_93yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_93yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_92yMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_93yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_92yMin(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_92yMin(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Scatter2D.pyx":310
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return min(self.yMins())             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 310, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":307
 *         return self._mknp([p.yErrAvg() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter2D.pyx":312
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_95yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_94yMax, "Scatter2D.yMax(self)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_95yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_95yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_94yMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_95yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_94yMax(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_94yMax(struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Scatter2D.pyx":315
 *         """Highest y value."""
 *         # TODO: add extra dimensionality for multiple errors?
 *         return max(self.yMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(29, 315, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 315, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter2D.pyx":312
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter2D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_97__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_96__reduce_cython__, "Scatter2D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_97__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_97__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_96__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_97__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_96__reduce_cython__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_96__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_99__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter2D_98__setstate_cython__, "Scatter2D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter2D_99__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_99__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_98__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter2D_99__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter2D_98__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter2D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter2D_98__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter2D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter2D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter3D* s3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter3D*> self.ptr()
 * 
 */

static CYTHON_INLINE YODA::Scatter3D *__pyx_f_4yoda_4core_9Scatter3D_s3ptr(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  YODA::Scatter3D *__pyx_r;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("s3ptr", 0);

  /* "include/Scatter3D.pyx":19
 * 
 *     cdef inline c.Scatter3D* s3ptr(self) except NULL:
 *         return <c.Scatter3D*> self.ptr()             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self, *args, **kwargs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4util_4Base_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((void *)NULL))) __PYX_ERR(30, 19, __pyx_L1_error)
  __pyx_r = ((YODA::Scatter3D *)__pyx_t_1);
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":18
 *     """
 * 
 *     cdef inline c.Scatter3D* s3ptr(self) except NULL:             # <<<<<<<<<<<<<<
 *         return <c.Scatter3D*> self.ptr()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.s3ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":21
 *         return <c.Scatter3D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

/* Python wrapper */
static int __pyx_pw_4yoda_4core_9Scatter3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_4yoda_4core_9Scatter3D_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 1))) return -1;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return -1;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D___init__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_4yoda_4core_9Scatter3D___init__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/Scatter3D.pyx":22
 * 
 *     def __init__(self, *args, **kwargs):
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __init_2(self, path="", title=""):
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_util); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_try_loop); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__init_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyList_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_1);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":21
 *         return <c.Scatter3D*> self.ptr()
 * 
 *     def __init__(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_2__init_2, "Scatter3D.__init_2(self, path='', title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_3_Scatter3D__init_2 = {"_Scatter3D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_2__init_2};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_2(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  PyObject *__pyx_v_title = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__init_2 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[2] = {0,0};
    values[0] = ((PyObject *)__pyx_kp_s__2);
    values[1] = ((PyObject *)__pyx_kp_s__2);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 24, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 24, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter3D__init_2") < 0)) __PYX_ERR(30, 24, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_path = values[0];
    __pyx_v_title = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__init_2", 0, 0, 2, __pyx_nargs); __PYX_ERR(30, 24, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_2__init_2(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_2__init_2(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_path, PyObject *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  std::string __pyx_t_2;
  YODA::Scatter3D *__pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__init_2", 0);
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_INCREF(__pyx_v_title);

  /* "include/Scatter3D.pyx":25
 * 
 *     def __init_2(self, path="", title=""):
 *         path  = path             # <<<<<<<<<<<<<<
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 */
  __Pyx_INCREF(__pyx_v_path);
  __Pyx_DECREF_SET(__pyx_v_path, __pyx_v_path);

  /* "include/Scatter3D.pyx":26
 *     def __init_2(self, path="", title=""):
 *         path  = path
 *         title = title             # <<<<<<<<<<<<<<
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 */
  __Pyx_INCREF(__pyx_v_title);
  __Pyx_DECREF_SET(__pyx_v_title, __pyx_v_title);

  /* "include/Scatter3D.pyx":27
 *         path  = path
 *         title = title
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))             # <<<<<<<<<<<<<<
 * 
 *     def __init_3(self, points, char* path="", char* title=""):
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_path); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 27, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_string_from_py_std__in_string(__pyx_v_title); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 27, __pyx_L1_error)
  try {
    __pyx_t_3 = new YODA::Scatter3D(((std::string)__pyx_t_1), ((std::string)__pyx_t_2));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 27, __pyx_L1_error)
  }
  __pyx_t_4 = __pyx_f_4yoda_4util_set_owned_ptr(((struct __pyx_obj_4yoda_4util_Base *)__pyx_v_self), __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Scatter3D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__init_2", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_path);
  __Pyx_XDECREF(__pyx_v_title);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, char* path="", char* title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_4__init_3, "Scatter3D.__init_3(self, points, char *path='', char *title='')");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_5_Scatter3D__init_3 = {"_Scatter3D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_4__init_3};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_3(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_points = 0;
  char *__pyx_v_path;
  char *__pyx_v_title;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__init_3 (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_points,&__pyx_n_s_path,&__pyx_n_s_title,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_points)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 29, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_path);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 29, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_title);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 29, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter3D__init_3") < 0)) __PYX_ERR(30, 29, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_points = values[0];
    if (values[1]) {
      __pyx_v_path = __Pyx_PyObject_AsWritableString(values[1]); if (unlikely((!__pyx_v_path) && PyErr_Occurred())) __PYX_ERR(30, 29, __pyx_L3_error)
    } else {
      __pyx_v_path = ((char *)((char *)""));
    }
    if (values[2]) {
      __pyx_v_title = __Pyx_PyObject_AsWritableString(values[2]); if (unlikely((!__pyx_v_title) && PyErr_Occurred())) __PYX_ERR(30, 29, __pyx_L3_error)
    } else {
      __pyx_v_title = ((char *)((char *)""));
    }
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__init_3", 0, 1, 3, __pyx_nargs); __PYX_ERR(30, 29, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_4__init_3(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_points, __pyx_v_path, __pyx_v_title);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_4__init_3(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_points, char *__pyx_v_path, char *__pyx_v_title) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__init_3", 0);

  /* "include/Scatter3D.pyx":30
 * 
 *     def __init_3(self, points, char* path="", char* title=""):
 *         self.__init_2(path, title)             # <<<<<<<<<<<<<<
 *         self.addPoints(points)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__init_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyStr_FromString(__pyx_v_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyStr_FromString(__pyx_v_title); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 30, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":31
 *     def __init_3(self, points, char* path="", char* title=""):
 *         self.__init_2(path, title)
 *         self.addPoints(points)             # <<<<<<<<<<<<<<
 * 
 *     def clone(self):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_points};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 31, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, char* path="", char* title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__init_3", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter3D.
 *         Clone this Scatter3D."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_6clone, "Scatter3D.clone(self)\n() -> Scatter3D.\n        Clone this Scatter3D.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_7clone = {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_6clone};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_7clone(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clone (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("clone", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "clone", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_6clone(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_6clone(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  YODA::Scatter3D *__pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clone", 0);

  /* "include/Scatter3D.pyx":36
 *         """() -> Scatter3D.
 *         Clone this Scatter3D."""
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 36, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 36, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter3D.
 *         Clone this Scatter3D."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":38
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_9__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_9__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_8__repr__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_8__repr__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/Scatter3D.pyx":39
 * 
 *     def __repr__(self):
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_4, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 39, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_3);
  __pyx_t_2 = 0;
  __pyx_t_1 = 0;
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_s_s_d_points, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 39, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":38
 *         return cutil.new_owned_cls(Scatter3D, self.s3ptr().newclone())
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         return "<%s '%s' %d points>" % (self.__class__.__name__, self.path(), len(self.points()))
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter3D.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_10reset, "Scatter3D.reset(self)\nReset the scatter, removing all points");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_11reset = {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_10reset};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_11reset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reset (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("reset", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "reset", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_10reset(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_10reset(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reset", 0);

  /* "include/Scatter3D.pyx":44
 *     def reset(self):
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 44, __pyx_L1_error)
  try {
    __pyx_t_1->reset();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 44, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.reset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_12numPoints, "Scatter3D.numPoints(self)\n() -> int\n        Number of points in this scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_13numPoints = {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_12numPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_13numPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("numPoints (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("numPoints", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "numPoints", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_12numPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_12numPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  size_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("numPoints", 0);

  /* "include/Scatter3D.pyx":50
 *         """() -> int
 *         Number of points in this scatter."""
 *         return self.s3ptr().numPoints()             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 50, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->numPoints();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 50, __pyx_L1_error)
  }
  __pyx_t_3 = __Pyx_PyInt_FromSize_t(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.numPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":52
 *         return self.s3ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

/* Python wrapper */
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter3D_15__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_4yoda_4core_9Scatter3D_15__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_14__len__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_4yoda_4core_9Scatter3D_14__len__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__len__", 0);

  /* "include/Scatter3D.pyx":53
 * 
 *     def __len__(self):
 *         return self.numPoints()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 53, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyIndex_AsSsize_t(__pyx_t_1); if (unlikely((__pyx_t_5 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":52
 *         return self.s3ptr().numPoints()
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self.numPoints()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.__len__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_16points, "Scatter3D.points(self)\nAccess the ordered list of points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_17points = {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_16points};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_17points(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("points (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("points", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "points", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_16points(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_16points(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("points", 0);

  /* "include/Scatter3D.pyx":58
 *     def points(self):
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]             # <<<<<<<<<<<<<<
 * 
 *     def point(self, size_t i):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 58, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(30, 58, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(30, 58, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 58, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 58, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_8 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_i};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_3))) __PYX_ERR(30, 58, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("yoda.core.Scatter3D.points", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_18point, "Scatter3D.point(self, size_t i)\nAccess the i'th point.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_19point = {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_18point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_19point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  size_t __pyx_v_i;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 60, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "point") < 0)) __PYX_ERR(30, 60, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_i = __Pyx_PyInt_As_size_t(values[0]); if (unlikely((__pyx_v_i == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 60, __pyx_L3_error)
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("point", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 60, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_18point(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_18point(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, size_t __pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("point", 0);

  /* "include/Scatter3D.pyx":62
 *     def point(self, size_t i):
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 *     def __getitem__(self, py_ix):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 62, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), (&__pyx_t_1->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter3D.point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":64
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix); /*proto*/
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_21__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_20__getitem__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), ((PyObject *)__pyx_v_py_ix));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_20__getitem__(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_py_ix) {
  size_t __pyx_v_i;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  size_t __pyx_t_6;
  size_t __pyx_t_7;
  YODA::Scatter3D *__pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__getitem__", 0);

  /* "include/Scatter3D.pyx":65
 * 
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())             # <<<<<<<<<<<<<<
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_py_ix); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(30, 65, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_numPoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_4, };
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 65, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_6 = __Pyx_PyInt_As_size_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __pyx_f_4yoda_4util_pythonic_index(__pyx_t_1, __pyx_t_6); if (unlikely(__pyx_t_7 == ((size_t)0) && PyErr_Occurred())) __PYX_ERR(30, 65, __pyx_L1_error)
  __pyx_v_i = __pyx_t_7;

  /* "include/Scatter3D.pyx":66
 *     def __getitem__(self, py_ix):
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_8 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 66, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4util_new_borrowed_cls(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), (&__pyx_t_8->point(__pyx_v_i)), ((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":64
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 * 
 *     def __getitem__(self, py_ix):             # <<<<<<<<<<<<<<
 *         cdef size_t i = cutil.pythonic_index(py_ix, self.numPoints())
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_22addPoint, "Scatter3D.addPoint(self, *args, **kwargs)\nAdd a new point.\n\n        Provide either a single yoda.Point3D object, or the\n        3-6 args: x, y, z, xerrs=0, yerrs=0, zerrs=0.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_23addPoint = {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_22addPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_23addPoint(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_args = 0;
  PyObject *__pyx_v_kwargs = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoint (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "addPoint", 1))) return NULL;
  if (unlikely(__pyx_kwds)) {
    __pyx_v_kwargs = __Pyx_KwargsAsDict_VARARGS(__pyx_kwds, __pyx_kwvalues);
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  } else {
    __pyx_v_kwargs = PyDict_New();
    if (unlikely(!__pyx_v_kwargs)) return NULL;
    __Pyx_GOTREF(__pyx_v_kwargs);
  }
  __Pyx_INCREF(__pyx_args);
  __pyx_v_args = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_22addPoint(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_args);
  __Pyx_DECREF(__pyx_v_kwargs);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_22addPoint(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoint", 0);

  /* "include/Scatter3D.pyx":75
 *         3-6 args: x, y, z, xerrs=0, yerrs=0, zerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter3D.pyx":76
 *         """
 *         try:
 *             self.__addPoint_point(*args, **kwargs)             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__addPoint_point); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_v_args, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 76, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "include/Scatter3D.pyx":75
 *         3-6 args: x, y, z, xerrs=0, yerrs=0, zerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter3D.pyx":77
 *         try:
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter3D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(30, 77, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_4);

      /* "include/Scatter3D.pyx":78
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 *             self.__addPoint_explicit(*args, **kwargs)             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):
 */
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__addPoint_explicit); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = PyDict_Copy(__pyx_v_kwargs); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_v_args, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 78, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter3D.pyx":75
 *         3-6 args: x, y, z, xerrs=0, yerrs=0, zerrs=0.
 *         """
 *         try:             # <<<<<<<<<<<<<<
 *             self.__addPoint_point(*args, **kwargs)
 *         except TypeError:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter3D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.addPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_24__addPoint_explicit, "Scatter3D.__addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit = {"_Scatter3D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_24__addPoint_explicit};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_y = 0;
  PyObject *__pyx_v_z = 0;
  PyObject *__pyx_v_xerrs = 0;
  PyObject *__pyx_v_yerrs = 0;
  PyObject *__pyx_v_zerrs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_explicit (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,&__pyx_n_s_z,&__pyx_n_s_xerrs,&__pyx_n_s_yerrs,&__pyx_n_s_zerrs,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    values[3] = ((PyObject *)__pyx_int_0);
    values[4] = ((PyObject *)__pyx_int_0);
    values[5] = ((PyObject *)__pyx_int_0);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_y)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Scatter3D__addPoint_explicit", 0, 3, 6, 1); __PYX_ERR(30, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_z)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_Scatter3D__addPoint_explicit", 0, 3, 6, 2); __PYX_ERR(30, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xerrs);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_yerrs);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_zerrs);
          if (value) { values[5] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 80, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter3D__addPoint_explicit") < 0)) __PYX_ERR(30, 80, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_x = values[0];
    __pyx_v_y = values[1];
    __pyx_v_z = values[2];
    __pyx_v_xerrs = values[3];
    __pyx_v_yerrs = values[4];
    __pyx_v_zerrs = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__addPoint_explicit", 0, 3, 6, __pyx_nargs); __PYX_ERR(30, 80, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_24__addPoint_explicit(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_x, __pyx_v_y, __pyx_v_z, __pyx_v_xerrs, __pyx_v_yerrs, __pyx_v_zerrs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_24__addPoint_explicit(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_y, PyObject *__pyx_v_z, PyObject *__pyx_v_xerrs, PyObject *__pyx_v_yerrs, PyObject *__pyx_v_zerrs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_explicit", 0);

  /* "include/Scatter3D.pyx":81
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))             # <<<<<<<<<<<<<<
 * 
 *     def __addPoint_point(self, Point3D p):
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_Scatter3D__addPoint_point); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(6); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_x);
  __Pyx_GIVEREF(__pyx_v_x);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_x);
  __Pyx_INCREF(__pyx_v_y);
  __Pyx_GIVEREF(__pyx_v_y);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_y);
  __Pyx_INCREF(__pyx_v_z);
  __Pyx_GIVEREF(__pyx_v_z);
  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_z);
  __Pyx_INCREF(__pyx_v_xerrs);
  __Pyx_GIVEREF(__pyx_v_xerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_v_xerrs);
  __Pyx_INCREF(__pyx_v_yerrs);
  __Pyx_GIVEREF(__pyx_v_yerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_v_yerrs);
  __Pyx_INCREF(__pyx_v_zerrs);
  __Pyx_GIVEREF(__pyx_v_zerrs);
  PyTuple_SET_ITEM(__pyx_t_3, 5, __pyx_v_zerrs);
  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4yoda_4core_Point3D), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 81, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__addPoint_explicit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":83
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_point, "Scatter3D.__addPoint_point(self, Point3D p)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point = {"_Scatter3D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_point};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_p = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_point (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_p,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 83, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_Scatter3D__addPoint_point") < 0)) __PYX_ERR(30, 83, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_p = ((struct __pyx_obj_4yoda_4core_Point3D *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_Scatter3D__addPoint_point", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 83, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_p), __pyx_ptype_4yoda_4core_Point3D, 1, "p", 0))) __PYX_ERR(30, 83, __pyx_L1_error)
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_26__addPoint_point(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_p);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_26__addPoint_point(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, struct __pyx_obj_4yoda_4core_Point3D *__pyx_v_p) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  YODA::Point3D *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_Scatter3D__addPoint_point", 0);

  /* "include/Scatter3D.pyx":84
 * 
 *     def __addPoint_point(self, Point3D p):
 *         self.s3ptr().addPoint(p.p3ptr()[0])             # <<<<<<<<<<<<<<
 * 
 *     def addPoints(self, iterable):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 84, __pyx_L1_error)
  __pyx_t_2 = ((struct __pyx_vtabstruct_4yoda_4core_Point3D *)__pyx_v_p->__pyx_base.__pyx_base.__pyx_vtab)->p3ptr(__pyx_v_p); if (unlikely(__pyx_t_2 == ((YODA::Point3D *)NULL))) __PYX_ERR(30, 84, __pyx_L1_error)
  __pyx_t_1->addPoint((__pyx_t_2[0]));

  /* "include/Scatter3D.pyx":83
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._Scatter3D__addPoint_point", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":86
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_28addPoints, "Scatter3D.addPoints(self, iterable)\nAdd several new points.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_29addPoints = {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_28addPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_29addPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_iterable = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_iterable,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_iterable)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 86, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "addPoints") < 0)) __PYX_ERR(30, 86, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_iterable = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 86, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_28addPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_iterable);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_28addPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_iterable) {
  PyObject *__pyx_v_row = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addPoints", 0);

  /* "include/Scatter3D.pyx":88
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  if (likely(PyList_CheckExact(__pyx_v_iterable)) || PyTuple_CheckExact(__pyx_v_iterable)) {
    __pyx_t_1 = __pyx_v_iterable; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_iterable); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 88, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 88, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(30, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(30, 88, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 88, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 88, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "include/Scatter3D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_5, &__pyx_t_6, &__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      /*try:*/ {

        /* "include/Scatter3D.pyx":90
 *         for row in iterable:
 *           try:
 *             self.addPoint(*row)             # <<<<<<<<<<<<<<
 *           except TypeError:
 *             self.addPoint(row)
 */
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PySequence_Tuple(__pyx_v_row); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 90, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "include/Scatter3D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      }
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      goto __pyx_L12_try_end;
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "include/Scatter3D.pyx":91
 *           try:
 *             self.addPoint(*row)
 *           except TypeError:             # <<<<<<<<<<<<<<
 *             self.addPoint(row)
 * 
 */
      __pyx_t_10 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
      if (__pyx_t_10) {
        __Pyx_AddTraceback("yoda.core.Scatter3D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_8, &__pyx_t_4) < 0) __PYX_ERR(30, 91, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_9);
        __Pyx_XGOTREF(__pyx_t_8);
        __Pyx_XGOTREF(__pyx_t_4);

        /* "include/Scatter3D.pyx":92
 *             self.addPoint(*row)
 *           except TypeError:
 *             self.addPoint(row)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoint(self, idx):
 */
        __pyx_t_12 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_addPoint); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 92, __pyx_L7_except_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_13 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_12))) {
          __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_12);
          if (likely(__pyx_t_13)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_12);
            __Pyx_INCREF(__pyx_t_13);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_12, function);
            __pyx_t_10 = 1;
          }
        }
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_13, __pyx_v_row};
          __pyx_t_11 = __Pyx_PyObject_FastCall(__pyx_t_12, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          if (unlikely(!__pyx_t_11)) __PYX_ERR(30, 92, __pyx_L7_except_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        goto __pyx_L6_exception_handled;
      }
      goto __pyx_L7_except_error;

      /* "include/Scatter3D.pyx":89
 *         """Add several new points."""
 *         for row in iterable:
 *           try:             # <<<<<<<<<<<<<<
 *             self.addPoint(*row)
 *           except TypeError:
 */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      goto __pyx_L1_error;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_5);
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
      __pyx_L12_try_end:;
    }

    /* "include/Scatter3D.pyx":88
 *     def addPoints(self, iterable):
 *         """Add several new points."""
 *         for row in iterable:             # <<<<<<<<<<<<<<
 *           try:
 *             self.addPoint(*row)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":86
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter3D.addPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_30rmPoint, "Scatter3D.rmPoint(self, idx)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_31rmPoint = {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_30rmPoint};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_31rmPoint(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idx = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoint (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idx,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idx)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 94, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoint") < 0)) __PYX_ERR(30, 94, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idx = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoint", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 94, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_30rmPoint(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_idx);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_30rmPoint(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idx) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  size_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoint", 0);

  /* "include/Scatter3D.pyx":95
 * 
 *     def rmPoint(self, idx):
 *         self.s3ptr().rmPoint(idx)             # <<<<<<<<<<<<<<
 * 
 *     def rmPoints(self, idxs):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 95, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_idx); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 95, __pyx_L1_error)
  __pyx_t_1->rmPoint(__pyx_t_2);

  /* "include/Scatter3D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.rmPoint", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":97
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_32rmPoints, "Scatter3D.rmPoints(self, idxs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_33rmPoints = {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_32rmPoints};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_33rmPoints(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_idxs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmPoints (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_idxs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_idxs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 97, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "rmPoints") < 0)) __PYX_ERR(30, 97, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_idxs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmPoints", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 97, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_32rmPoints(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_idxs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_32rmPoints(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_idxs) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  std::vector<size_t>  __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmPoints", 0);

  /* "include/Scatter3D.pyx":98
 * 
 *     def rmPoints(self, idxs):
 *         self.s3ptr().rmPoints(idxs)             # <<<<<<<<<<<<<<
 * 
 *     def combineWith(self, others):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 98, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_size_t(__pyx_v_idxs); if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 98, __pyx_L1_error)
  __pyx_t_1->rmPoints(__PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2));

  /* "include/Scatter3D.pyx":97
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.rmPoints", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":100
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_34combineWith, "Scatter3D.combineWith(self, others)\nTry to add points from other Scatter3Ds into this one.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_35combineWith = {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_34combineWith};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_35combineWith(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_others = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("combineWith (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_others,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_others)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 100, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "combineWith") < 0)) __PYX_ERR(30, 100, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_others = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("combineWith", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 100, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_34combineWith(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_others);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_34combineWith(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_others) {
  struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_other = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  YODA::Scatter3D *__pyx_t_5;
  YODA::Scatter3D *__pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  PyObject *(*__pyx_t_12)(PyObject *);
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("combineWith", 0);

  /* "include/Scatter3D.pyx":103
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter3D?
 *             other = others
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter3D.pyx":105
 *         try:
 *             # Can we type it as a Scatter3D?
 *             other = others             # <<<<<<<<<<<<<<
 *         except TypeError:
 *             # Could be an iterable...
 */
      if (!(likely(((__pyx_v_others) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_others, __pyx_ptype_4yoda_4core_Scatter3D))))) __PYX_ERR(30, 105, __pyx_L3_error)
      __pyx_t_4 = __pyx_v_others;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_v_other = ((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/Scatter3D.pyx":103
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter3D?
 *             other = others
 */
    }

    /* "include/Scatter3D.pyx":111
 *                 self.s3ptr().combineWith(deref(other.s3ptr()))
 *         else:
 *             self.s3ptr().combineWith(deref(other.s3ptr()))             # <<<<<<<<<<<<<<
 * 
 * 
 */
    /*else:*/ {
      __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_5 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 111, __pyx_L5_except_error)
      __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_other); if (unlikely(__pyx_t_6 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 111, __pyx_L5_except_error)
      __pyx_t_5->combineWith((*__pyx_t_6));
    }
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "include/Scatter3D.pyx":106
 *             # Can we type it as a Scatter3D?
 *             other = others
 *         except TypeError:             # <<<<<<<<<<<<<<
 *             # Could be an iterable...
 *             for other in others:
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_TypeError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter3D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(30, 106, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);

      /* "include/Scatter3D.pyx":108
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s3ptr().combineWith(deref(other.s3ptr()))
 *         else:
 */
      if (likely(PyList_CheckExact(__pyx_v_others)) || PyTuple_CheckExact(__pyx_v_others)) {
        __pyx_t_10 = __pyx_v_others; __Pyx_INCREF(__pyx_t_10); __pyx_t_11 = 0;
        __pyx_t_12 = NULL;
      } else {
        __pyx_t_11 = -1; __pyx_t_10 = PyObject_GetIter(__pyx_v_others); if (unlikely(!__pyx_t_10)) __PYX_ERR(30, 108, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_10); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 108, __pyx_L5_except_error)
      }
      for (;;) {
        if (likely(!__pyx_t_12)) {
          if (likely(PyList_CheckExact(__pyx_t_10))) {
            if (__pyx_t_11 >= PyList_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyList_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(30, 108, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(30, 108, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          } else {
            if (__pyx_t_11 >= PyTuple_GET_SIZE(__pyx_t_10)) break;
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_13 = PyTuple_GET_ITEM(__pyx_t_10, __pyx_t_11); __Pyx_INCREF(__pyx_t_13); __pyx_t_11++; if (unlikely((0 < 0))) __PYX_ERR(30, 108, __pyx_L5_except_error)
            #else
            __pyx_t_13 = PySequence_ITEM(__pyx_t_10, __pyx_t_11); __pyx_t_11++; if (unlikely(!__pyx_t_13)) __PYX_ERR(30, 108, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_13);
            #endif
          }
        } else {
          __pyx_t_13 = __pyx_t_12(__pyx_t_10);
          if (unlikely(!__pyx_t_13)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(30, 108, __pyx_L5_except_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_13);
        }
        if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_4yoda_4core_Scatter3D))))) __PYX_ERR(30, 108, __pyx_L5_except_error)
        __Pyx_XDECREF_SET(__pyx_v_other, ((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_t_13));
        __pyx_t_13 = 0;

        /* "include/Scatter3D.pyx":109
 *             # Could be an iterable...
 *             for other in others:
 *                 self.s3ptr().combineWith(deref(other.s3ptr()))             # <<<<<<<<<<<<<<
 *         else:
 *             self.s3ptr().combineWith(deref(other.s3ptr()))
 */
        __pyx_t_6 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_6 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 109, __pyx_L5_except_error)
        __pyx_t_5 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_other); if (unlikely(__pyx_t_5 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 109, __pyx_L5_except_error)
        __pyx_t_6->combineWith((*__pyx_t_5));

        /* "include/Scatter3D.pyx":108
 *         except TypeError:
 *             # Could be an iterable...
 *             for other in others:             # <<<<<<<<<<<<<<
 *                 self.s3ptr().combineWith(deref(other.s3ptr()))
 *         else:
 */
      }
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L4_exception_handled;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter3D.pyx":103
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 *         try:             # <<<<<<<<<<<<<<
 *             # Can we type it as a Scatter3D?
 *             other = others
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L4_exception_handled:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    __pyx_L8_try_end:;
  }

  /* "include/Scatter3D.pyx":100
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("yoda.core.Scatter3D.combineWith", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_other);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_36mkScatter, "Scatter3D.mkScatter(self)\nNone -> Scatter3D.\n        Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,\n        even if it already is a scatter.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_37mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_36mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_37mkScatter(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("mkScatter", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "mkScatter", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_36mkScatter(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_36mkScatter(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  YODA::Scatter3D __pyx_v_s3;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  YODA::Scatter3D __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Scatter3D.pyx":118
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 *         even if it already is a scatter."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Scatter3D(deref(self.s3ptr()))             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 118, __pyx_L1_error)
  try {
    __pyx_t_2 = YODA::mkScatter((*__pyx_t_1));
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 118, __pyx_L1_error)
  }
  __pyx_v_s3 = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter3D.pyx":119
 *         even if it already is a scatter."""
 *         cdef c.Scatter3D s3 = c.mkScatter_Scatter3D(deref(self.s3ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  try {
    __pyx_t_1 = __pyx_v_s3.newclone();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 119, __pyx_L1_error)
  }
  __pyx_t_3 = __pyx_f_4yoda_4util_new_owned_cls(((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_38scaleX, "Scatter3D.scaleX(self, a)\n(float) -> None\n        Scale the x values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_39scaleX = {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_38scaleX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_39scaleX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 122, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleX") < 0)) __PYX_ERR(30, 122, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleX", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 122, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_38scaleX(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_38scaleX(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleX", 0);

  /* "include/Scatter3D.pyx":125
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scaleX(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleY(self, a):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 125, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 125, __pyx_L1_error)
  try {
    __pyx_t_1->scaleX(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 125, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":127
 *         self.s3ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_41scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_40scaleY, "Scatter3D.scaleY(self, a)\n(float) -> None\n        Scale the y values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_41scaleY = {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_41scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_40scaleY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_41scaleY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 127, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleY") < 0)) __PYX_ERR(30, 127, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleY", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 127, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_40scaleY(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_40scaleY(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleY", 0);

  /* "include/Scatter3D.pyx":130
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scaleY(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleZ(self, a):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 130, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 130, __pyx_L1_error)
  try {
    __pyx_t_1->scaleY(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 130, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":127
 *         self.s3ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":132
 *         self.s3ptr().scaleY(a)
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_43scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_42scaleZ, "Scatter3D.scaleZ(self, a)\n(float) -> None\n        Scale the z values and errors of the points in this scatter by factor a.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_43scaleZ = {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_43scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_42scaleZ};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_43scaleZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_a = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_a)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 132, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleZ") < 0)) __PYX_ERR(30, 132, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_a = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 132, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_42scaleZ(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_a);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_42scaleZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_a) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  double __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleZ", 0);

  /* "include/Scatter3D.pyx":135
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 *         self.s3ptr().scaleZ(a)             # <<<<<<<<<<<<<<
 * 
 *     def scaleXYZ(self, ax=1, ay=1, az=1):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 135, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_a); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 135, __pyx_L1_error)
  try {
    __pyx_t_1->scaleZ(__pyx_t_2);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 135, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":132
 *         self.s3ptr().scaleY(a)
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":137
 *         self.s3ptr().scaleZ(a)
 * 
 *     def scaleXYZ(self, ax=1, ay=1, az=1):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay, az."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_45scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_44scaleXYZ, "Scatter3D.scaleXYZ(self, ax=1, ay=1, az=1)\n(float=1, float=1, float=1) -> None\n        Scale the values and errors of the points in this scatter by factors ax, ay, az.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_45scaleXYZ = {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_45scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_44scaleXYZ};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_45scaleXYZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ax = 0;
  PyObject *__pyx_v_ay = 0;
  PyObject *__pyx_v_az = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scaleXYZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ax,&__pyx_n_s_ay,&__pyx_n_s_az,0};
    PyObject* values[3] = {0,0,0};
    values[0] = ((PyObject *)__pyx_int_1);
    values[1] = ((PyObject *)__pyx_int_1);
    values[2] = ((PyObject *)__pyx_int_1);
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ax);
          if (value) { values[0] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 137, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ay);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 137, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_az);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 137, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scaleXYZ") < 0)) __PYX_ERR(30, 137, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ax = values[0];
    __pyx_v_ay = values[1];
    __pyx_v_az = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scaleXYZ", 0, 0, 3, __pyx_nargs); __PYX_ERR(30, 137, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_44scaleXYZ(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_ax, __pyx_v_ay, __pyx_v_az);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_44scaleXYZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_ax, PyObject *__pyx_v_ay, PyObject *__pyx_v_az) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  double __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scaleXYZ", 0);

  /* "include/Scatter3D.pyx":140
 *         """(float=1, float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay, az."""
 *         self.s3ptr().scaleXYZ(ax, ay, az)             # <<<<<<<<<<<<<<
 * 
 *     def scale(self, i, scale):
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 140, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_ax); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 140, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_ay); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 140, __pyx_L1_error)
  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_v_az); if (unlikely((__pyx_t_4 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 140, __pyx_L1_error)
  try {
    __pyx_t_1->scaleXYZ(__pyx_t_2, __pyx_t_3, __pyx_t_4);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 140, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":137
 *         self.s3ptr().scaleZ(a)
 * 
 *     def scaleXYZ(self, ax=1, ay=1, az=1):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay, az."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scaleXYZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":142
 *         self.s3ptr().scaleXYZ(ax, ay, az)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_47scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_46scale, "Scatter3D.scale(self, i, scale)\n(int, float) -> None\n        Scale values on axis i");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_47scale = {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_47scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_46scale};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_47scale(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  PyObject *__pyx_v_scale = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_i,&__pyx_n_s_scale,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_i)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 142, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_scale)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 142, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, 1); __PYX_ERR(30, 142, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "scale") < 0)) __PYX_ERR(30, 142, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_i = values[0];
    __pyx_v_scale = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("scale", 1, 2, 2, __pyx_nargs); __PYX_ERR(30, 142, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_46scale(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_i, __pyx_v_scale);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_46scale(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_i, PyObject *__pyx_v_scale) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  size_t __pyx_t_2;
  double __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale", 0);

  /* "include/Scatter3D.pyx":145
 *         """(int, float) -> None
 *         Scale values on axis i"""
 *         self.s3ptr().scale(i, scale)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 145, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyInt_As_size_t(__pyx_v_i); if (unlikely((__pyx_t_2 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 145, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_scale); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(30, 145, __pyx_L1_error)
  try {
    __pyx_t_1->scale(__pyx_t_2, __pyx_t_3);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 145, __pyx_L1_error)
  }

  /* "include/Scatter3D.pyx":142
 *         self.s3ptr().scaleXYZ(ax, ay, az)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.scale", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":148
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_49transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_48transformX, "Scatter3D.transformX(self, f)\n(fn) -> None\n        Transform the x values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_49transformX = {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_49transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_48transformX};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_49transformX(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformX (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 148, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformX") < 0)) __PYX_ERR(30, 148, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformX", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 148, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_48transformX(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_48transformX(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter3D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformX", 0);

  /* "include/Scatter3D.pyx":151
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":152
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter3D.pyx":153
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 153, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 153, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 153, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 153, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 153, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter3D.pyx":152
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter3D.pyx":154
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter3D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(30, 154, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter3D.pyx":155
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 155, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(30, 155, __pyx_L5_except_error)
    }

    /* "include/Scatter3D.pyx":152
 *         Transform the x values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter3D.pyx":156
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 156, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter3D.pyx":157
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 *     def transformY(self, f):
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 157, __pyx_L1_error)
  YODA::transformX((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter3D.pyx":148
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformX", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":159
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_51transformY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_50transformY, "Scatter3D.transformY(self, f)\n(fn) -> None\n        Transform the y values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_51transformY = {"transformY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_51transformY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_50transformY};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_51transformY(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformY (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 159, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformY") < 0)) __PYX_ERR(30, 159, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformY", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 159, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_50transformY(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_50transformY(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter3D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformY", 0);

  /* "include/Scatter3D.pyx":162
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":163
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter3D.pyx":164
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 164, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 164, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 164, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 164, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 164, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter3D.pyx":163
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter3D.pyx":165
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter3D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(30, 165, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter3D.pyx":166
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 166, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(30, 166, __pyx_L5_except_error)
    }

    /* "include/Scatter3D.pyx":163
 *         Transform the y values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter3D.pyx":167
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter3D.pyx":168
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 *     def transformZ(self, f):
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 168, __pyx_L1_error)
  YODA::transformY((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter3D.pyx":159
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformY", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":170
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def transformZ(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the z values and errors of the points in this scatter by function f."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_53transformZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_52transformZ, "Scatter3D.transformZ(self, f)\n(fn) -> None\n        Transform the z values and errors of the points in this scatter by function f.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_53transformZ = {"transformZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_53transformZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_52transformZ};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_53transformZ(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_f = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transformZ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_f)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 170, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "transformZ") < 0)) __PYX_ERR(30, 170, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_f = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transformZ", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 170, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_52transformZ(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_f);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_52transformZ(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_f) {
  PyObject *__pyx_v_ctypes = NULL;
  PyObject *__pyx_v_callback = NULL;
  __pyx_t_4yoda_12declarations_dbl_dbl_fptr __pyx_v_fptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  size_t __pyx_t_11;
  YODA::Scatter3D *__pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transformZ", 0);

  /* "include/Scatter3D.pyx":173
 *         """(fn) -> None
 *         Transform the z values and errors of the points in this scatter by function f."""
 *         import ctypes             # <<<<<<<<<<<<<<
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_ctypes, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ctypes = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/Scatter3D.pyx":174
 *         Transform the z values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_2, &__pyx_t_3, &__pyx_t_4);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_4);
    /*try:*/ {

      /* "include/Scatter3D.pyx":175
 *         import ctypes
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)             # <<<<<<<<<<<<<<
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_CFUNCTYPE); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 175, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 175, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_c_double); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 175, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_t_7, __pyx_t_8};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_10, 2+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 175, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __pyx_t_6 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_f};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 175, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_v_callback = __pyx_t_1;
      __pyx_t_1 = 0;

      /* "include/Scatter3D.pyx":174
 *         Transform the z values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    }
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    goto __pyx_L8_try_end;
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "include/Scatter3D.pyx":176
 *         try:
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 */
    /*except:*/ {
      __Pyx_AddTraceback("yoda.core.Scatter3D.transformZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(30, 176, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_1);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter3D.pyx":177
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 */
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(30, 177, __pyx_L5_except_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(30, 177, __pyx_L5_except_error)
    }

    /* "include/Scatter3D.pyx":174
 *         Transform the z values and errors of the points in this scatter by function f."""
 *         import ctypes
 *         try:             # <<<<<<<<<<<<<<
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_XGIVEREF(__pyx_t_4);
    __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
    goto __pyx_L1_error;
    __pyx_L8_try_end:;
  }

  /* "include/Scatter3D.pyx":178
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]             # <<<<<<<<<<<<<<
 *         c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)
 * 
 */
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_ctypes, __pyx_n_s_addressof); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_1 = NULL;
  __pyx_t_10 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_1)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_10 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_callback};
    __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_10, 1+__pyx_t_10);
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 178, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_11 = __Pyx_PyInt_As_size_t(__pyx_t_6); if (unlikely((__pyx_t_11 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(30, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_fptr = (((__pyx_t_4yoda_12declarations_dbl_dbl_fptr *)((size_t)__pyx_t_11))[0]);

  /* "include/Scatter3D.pyx":179
 *             raise RuntimeError("Callback is not of type (double) -> double")
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter3D_transformZ(deref(self.s3ptr()), fptr)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_12 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_12 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 179, __pyx_L1_error)
  YODA::transformZ((*__pyx_t_12), __pyx_v_fptr);

  /* "include/Scatter3D.pyx":170
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def transformZ(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the z values and errors of the points in this scatter by function f."""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core.Scatter3D.transformZ", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ctypes);
  __Pyx_XDECREF(__pyx_v_callback);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":190
 *     #     return cutil.new_owned_cls(Scatter3D, c.Scatter3D_sub_Scatter3D(self.s3ptr(), other.s3ptr()))
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_55updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_54updateTotalUncertainty, "Scatter3D.updateTotalUncertainty(self)\nNone -> None\n        Sum the error in the error map in quadrature and update the total (\"\") uncertainty.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_55updateTotalUncertainty = {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_55updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_54updateTotalUncertainty};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_55updateTotalUncertainty(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("updateTotalUncertainty (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("updateTotalUncertainty", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "updateTotalUncertainty", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_54updateTotalUncertainty(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_54updateTotalUncertainty(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("updateTotalUncertainty", 0);

  /* "include/Scatter3D.pyx":194
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 *         """
 *         return self.s3ptr().updateTotalUncertainty()             # <<<<<<<<<<<<<<
 * 
 *     def writeVariationsToAnnotations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 194, __pyx_L1_error)
  try {
    __pyx_t_1->updateTotalUncertainty();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 194, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":190
 *     #     return cutil.new_owned_cls(Scatter3D, c.Scatter3D_sub_Scatter3D(self.s3ptr(), other.s3ptr()))
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter3D.updateTotalUncertainty", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":196
 *         return self.s3ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations, "Scatter3D.writeVariationsToAnnotations(self)\nNone -> None\n        Parse the variations and add them to the annotations.\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations = {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("writeVariationsToAnnotations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "writeVariationsToAnnotations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeVariationsToAnnotations", 0);

  /* "include/Scatter3D.pyx":200
 *         Parse the variations and add them to the annotations.
 *         """
 *         return self.s3ptr().writeVariationsToAnnotations()             # <<<<<<<<<<<<<<
 * 
 *     def variations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 200, __pyx_L1_error)
  try {
    __pyx_t_1->writeVariationsToAnnotations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 200, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":196
 *         return self.s3ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter3D.writeVariationsToAnnotations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":202
 *         return self.s3ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_59variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_58variations, "Scatter3D.variations(self)\nNone -> vector[string]\n        Get the list of variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_59variations = {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_59variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_58variations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_59variations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("variations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("variations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "variations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_58variations(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_58variations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  std::vector<std::string>  __pyx_v_vars;
  std::string __pyx_v_var;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  std::vector<std::string>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  std::vector<std::string> ::iterator __pyx_t_4;
  std::string __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("variations", 0);

  /* "include/Scatter3D.pyx":205
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 *         vars = self.s3ptr().variations()             # <<<<<<<<<<<<<<
 *         return [var for var in vars]
 * 
 */
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 205, __pyx_L1_error)
  try {
    __pyx_t_2 = __pyx_t_1->variations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 205, __pyx_L1_error)
  }
  __pyx_v_vars = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_2);

  /* "include/Scatter3D.pyx":206
 *         Get the list of variations stored in the points of the Scatter"""
 *         vars = self.s3ptr().variations()
 *         return [var for var in vars]             # <<<<<<<<<<<<<<
 * 
 *     def rmVariations(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __pyx_v_vars.begin();
  for (;;) {
    if (!(__pyx_t_4 != __pyx_v_vars.end())) break;
    __pyx_t_5 = *__pyx_t_4;
    ++__pyx_t_4;
    __pyx_v_var = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_5);
    __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_var); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_6))) __PYX_ERR(30, 206, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":202
 *         return self.s3ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter3D.variations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":208
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_61rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_60rmVariations, "Scatter3D.rmVariations(self)\nNone -> None\n        Remove the variations stored in the points of the Scatter");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_61rmVariations = {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_61rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_60rmVariations};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_61rmVariations(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmVariations (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("rmVariations", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "rmVariations", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_60rmVariations(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_60rmVariations(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  YODA::Scatter3D *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmVariations", 0);

  /* "include/Scatter3D.pyx":211
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 *         return self.s3ptr().rmVariations()             # <<<<<<<<<<<<<<
 * 
 *     def hasValidErrorBreakdown(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_4yoda_4core_9Scatter3D_s3ptr(__pyx_v_self); if (unlikely(__pyx_t_1 == ((YODA::Scatter3D *)NULL))) __PYX_ERR(30, 211, __pyx_L1_error)
  try {
    __pyx_t_1->rmVariations();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(30, 211, __pyx_L1_error)
  }
  __pyx_t_2 = __Pyx_void_to_None(NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":208
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Scatter3D.rmVariations", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":213
 *         return self.s3ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown, "Scatter3D.hasValidErrorBreakdown(self)\n\n        Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown = {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("hasValidErrorBreakdown", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "hasValidErrorBreakdown", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_counter = NULL;
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_v_binErrs = NULL;
  PyObject *__pyx_v_binTotal = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_sys = NULL;
  PyObject *__pyx_v_err = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_t_11;
  PyObject *__pyx_t_12 = NULL;
  int __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hasValidErrorBreakdown", 0);

  /* "include/Scatter3D.pyx":217
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 *         """
 *         counter = -1             # <<<<<<<<<<<<<<
 *         for p in self.points():
 *             counter += 1
 */
  __Pyx_INCREF(__pyx_int_neg_1);
  __pyx_v_counter = __pyx_int_neg_1;

  /* "include/Scatter3D.pyx":218
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 218, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 218, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_6)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(30, 218, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely((0 < 0))) __PYX_ERR(30, 218, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 218, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter3D.pyx":219
 *         counter = -1
 *         for p in self.points():
 *             counter += 1             # <<<<<<<<<<<<<<
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 */
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_counter, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_counter, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter3D.pyx":220
 *         for p in self.points():
 *             counter += 1
 *             binErrs = p.errMap()             # <<<<<<<<<<<<<<
 *             if len(binErrs) < 2:
 *                 return False
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_errMap); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_7, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 220, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_binErrs, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Scatter3D.pyx":221
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    __pyx_t_8 = PyObject_Length(__pyx_v_binErrs); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(30, 221, __pyx_L1_error)
    __pyx_t_9 = (__pyx_t_8 < 2);
    if (__pyx_t_9) {

      /* "include/Scatter3D.pyx":222
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:
 *                 return False             # <<<<<<<<<<<<<<
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter3D.pyx":221
 *             counter += 1
 *             binErrs = p.errMap()
 *             if len(binErrs) < 2:             # <<<<<<<<<<<<<<
 *                 return False
 *             binTotal = [0.,0.]
 */
    }

    /* "include/Scatter3D.pyx":223
 *             if len(binErrs) < 2:
 *                 return False
 *             binTotal = [0.,0.]             # <<<<<<<<<<<<<<
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 */
    __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 0, __pyx_float_0_);
    __Pyx_INCREF(__pyx_float_0_);
    __Pyx_GIVEREF(__pyx_float_0_);
    PyList_SET_ITEM(__pyx_t_1, 1, __pyx_float_0_);
    __Pyx_XDECREF_SET(__pyx_v_binTotal, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "include/Scatter3D.pyx":224
 *                 return False
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():             # <<<<<<<<<<<<<<
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 */
    __pyx_t_8 = 0;
    if (unlikely(__pyx_v_binErrs == Py_None)) {
      PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "iteritems");
      __PYX_ERR(30, 224, __pyx_L1_error)
    }
    __pyx_t_3 = __Pyx_dict_iterator(__pyx_v_binErrs, 0, __pyx_n_s_iteritems, (&__pyx_t_10), (&__pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 224, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF(__pyx_t_1);
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
    while (1) {
      __pyx_t_11 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_10, &__pyx_t_8, &__pyx_t_3, &__pyx_t_7, NULL, __pyx_t_4);
      if (unlikely(__pyx_t_11 == 0)) break;
      if (unlikely(__pyx_t_11 == -1)) __PYX_ERR(30, 224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_XDECREF_SET(__pyx_v_sys, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_err, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "include/Scatter3D.pyx":225
 *             binTotal = [0.,0.]
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5             # <<<<<<<<<<<<<<
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 */
      __pyx_t_7 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_3 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_err, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyNumber_Add(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Power(__pyx_t_7, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 0, __pyx_t_12, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(30, 225, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;

      /* "include/Scatter3D.pyx":226
 *             for sys, err in binErrs.iteritems():
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5             # <<<<<<<<<<<<<<
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 */
      __pyx_t_12 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_7 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_err, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_12 = PyNumber_Add(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_12)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Power(__pyx_t_12, __pyx_float_0_5, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely((__Pyx_SetItemInt(__pyx_v_binTotal, 1, __pyx_t_3, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0))) __PYX_ERR(30, 226, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "include/Scatter3D.pyx":227
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(30, 227, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_13) {
    } else {
      __pyx_t_9 = __pyx_t_13;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_1 = __Pyx_GetItemInt_List(__pyx_v_binTotal, 1, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_13 = (__Pyx_PyInt_BoolEqObjC(__pyx_t_1, __pyx_int_0, 0, 0)); if (unlikely((__pyx_t_13 < 0))) __PYX_ERR(30, 227, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9 = __pyx_t_13;
    __pyx_L9_bool_binop_done:;
    if (__pyx_t_9) {

      /* "include/Scatter3D.pyx":228
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False             # <<<<<<<<<<<<<<
 *         return True
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "include/Scatter3D.pyx":227
 *                 binTotal[0] = (binTotal[0]**2 + err[0]**2)**0.5
 *                 binTotal[1] = (binTotal[1]**2 + err[1]**2)**0.5
 *             if binTotal[0] == 0 and binTotal[1] == 0:             # <<<<<<<<<<<<<<
 *                 return False
 *         return True
 */
    }

    /* "include/Scatter3D.pyx":218
 *         """
 *         counter = -1
 *         for p in self.points():             # <<<<<<<<<<<<<<
 *             counter += 1
 *             binErrs = p.errMap()
 */
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Scatter3D.pyx":229
 *             if binTotal[0] == 0 and binTotal[1] == 0:
 *                 return False
 *         return True             # <<<<<<<<<<<<<<
 * 
 *     def covarianceMatrix(self, *ignoreOffDiagonalTerms):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":213
 *         return self.s3ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("yoda.core.Scatter3D.hasValidErrorBreakdown", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_counter);
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XDECREF(__pyx_v_binErrs);
  __Pyx_XDECREF(__pyx_v_binTotal);
  __Pyx_XDECREF(__pyx_v_sys);
  __Pyx_XDECREF(__pyx_v_err);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":231
 *         return True
 * 
 *     def covarianceMatrix(self, *ignoreOffDiagonalTerms):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_65covarianceMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_64covarianceMatrix, "Scatter3D.covarianceMatrix(self, *ignoreOffDiagonalTerms)\nbool -> vector[vector[float]]\n        Construct the covariance matrix");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_65covarianceMatrix = {"covarianceMatrix", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_65covarianceMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_64covarianceMatrix};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_65covarianceMatrix(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ignoreOffDiagonalTerms = 0;
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covarianceMatrix (wrapper)", 0);
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_VARARGS(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "covarianceMatrix", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_ignoreOffDiagonalTerms = __pyx_args;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_64covarianceMatrix(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_ignoreOffDiagonalTerms);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_ignoreOffDiagonalTerms);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_64covarianceMatrix(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_ignoreOffDiagonalTerms) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covarianceMatrix", 0);

  /* "include/Scatter3D.pyx":234
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 *         return self._mknp(self.s2ptr().covarianceMatrix(ignoreOffDiagonalTerms))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_s2ptr); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_covarianceMatrix); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_ignoreOffDiagonalTerms};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 234, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":231
 *         return True
 * 
 *     def covarianceMatrix(self, *ignoreOffDiagonalTerms):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter3D.covarianceMatrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":237
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_67_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_66_mknp, "Scatter3D._mknp(self, xs)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_67_mknp = {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_66_mknp};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_67_mknp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_xs = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mknp (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xs,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(30, 237, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mknp") < 0)) __PYX_ERR(30, 237, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_xs = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mknp", 1, 1, 1, __pyx_nargs); __PYX_ERR(30, 237, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_66_mknp(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v_xs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_66_mknp(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, PyObject *__pyx_v_xs) {
  PyObject *__pyx_v_numpy = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mknp", 0);

  /* "include/Scatter3D.pyx":238
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
  {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
    __Pyx_XGOTREF(__pyx_t_1);
    __Pyx_XGOTREF(__pyx_t_2);
    __Pyx_XGOTREF(__pyx_t_3);
    /*try:*/ {

      /* "include/Scatter3D.pyx":239
 *     def _mknp(self, xs):
 *         try:
 *             import numpy             # <<<<<<<<<<<<<<
 *             return numpy.array(xs)
 *         except ImportError:
 */
      __pyx_t_4 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_numpy, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 239, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_v_numpy = __pyx_t_4;
      __pyx_t_4 = 0;

      /* "include/Scatter3D.pyx":240
 *         try:
 *             import numpy
 *             return numpy.array(xs)             # <<<<<<<<<<<<<<
 *         except ImportError:
 *             return xs
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_numpy, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 240, __pyx_L3_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_7 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_xs};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 240, __pyx_L3_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L7_try_return;

      /* "include/Scatter3D.pyx":238
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    }
    __pyx_L3_error:;
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "include/Scatter3D.pyx":241
 *             import numpy
 *             return numpy.array(xs)
 *         except ImportError:             # <<<<<<<<<<<<<<
 *             return xs
 * 
 */
    __pyx_t_7 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_ImportError);
    if (__pyx_t_7) {
      __Pyx_AddTraceback("yoda.core.Scatter3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
      if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6) < 0) __PYX_ERR(30, 241, __pyx_L5_except_error)
      __Pyx_XGOTREF(__pyx_t_4);
      __Pyx_XGOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_t_6);

      /* "include/Scatter3D.pyx":242
 *             return numpy.array(xs)
 *         except ImportError:
 *             return xs             # <<<<<<<<<<<<<<
 * 
 *     def xVals(self):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_xs);
      __pyx_r = __pyx_v_xs;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L6_except_return;
    }
    goto __pyx_L5_except_error;

    /* "include/Scatter3D.pyx":238
 * 
 *     def _mknp(self, xs):
 *         try:             # <<<<<<<<<<<<<<
 *             import numpy
 *             return numpy.array(xs)
 */
    __pyx_L5_except_error:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L1_error;
    __pyx_L7_try_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
    __pyx_L6_except_return:;
    __Pyx_XGIVEREF(__pyx_t_1);
    __Pyx_XGIVEREF(__pyx_t_2);
    __Pyx_XGIVEREF(__pyx_t_3);
    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
    goto __pyx_L0;
  }

  /* "include/Scatter3D.pyx":237
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.Scatter3D._mknp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_numpy);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":244
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_69xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_68xVals, "Scatter3D.xVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_69xVals = {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_69xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_68xVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_69xVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_68xVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_68xVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xVals", 0);

  /* "include/Scatter3D.pyx":245
 * 
 *     def xVals(self):
 *         return self._mknp([p.x() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 245, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 245, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 245, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 245, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 245, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_x); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 245, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 245, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":244
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":247
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_71xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_70xMins, "Scatter3D.xMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_71xMins = {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_71xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_70xMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_71xMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_70xMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_70xMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMins", 0);

  /* "include/Scatter3D.pyx":249
 *     def xMins(self):
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 249, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 249, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 249, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 249, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 249, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 249, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 249, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 249, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":247
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":251
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_73xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_72xMaxs, "Scatter3D.xMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_73xMaxs = {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_73xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_72xMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_73xMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_72xMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_72xMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMaxs", 0);

  /* "include/Scatter3D.pyx":253
 *     def xMaxs(self):
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 253, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 253, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 253, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 253, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 253, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":251
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":255
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x errors"""
 *         return self._mknp([p.xErrs() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_75xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_74xErrs, "Scatter3D.xErrs(self)\nAll x errors");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_75xErrs = {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_75xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_74xErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_75xErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_74xErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_74xErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xErrs", 0);

  /* "include/Scatter3D.pyx":257
 *     def xErrs(self):
 *         """All x errors"""
 *         return self._mknp([p.xErrs() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def xMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 257, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 257, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 257, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 257, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 257, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_xErrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 257, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":255
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x errors"""
 *         return self._mknp([p.xErrs() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":259
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_77xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_76xMin, "Scatter3D.xMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_77xMin = {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_77xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_76xMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_77xMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_76xMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_76xMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMin", 0);

  /* "include/Scatter3D.pyx":261
 *     def xMin(self):
 *         """Lowest x value."""
 *         return min(self.xMins())             # <<<<<<<<<<<<<<
 * 
 *     def xMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 261, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":259
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":263
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_79xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_78xMax, "Scatter3D.xMax(self)\nHighest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_79xMax = {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_79xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_78xMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_79xMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("xMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("xMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "xMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_78xMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_78xMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("xMax", 0);

  /* "include/Scatter3D.pyx":265
 *     def xMax(self):
 *         """Highest x value."""
 *         return max(self.xMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_xMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 265, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":263
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.xMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":268
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_81yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_80yVals, "Scatter3D.yVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_81yVals = {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_81yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_80yVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_81yVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_80yVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_80yVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yVals", 0);

  /* "include/Scatter3D.pyx":269
 * 
 *     def yVals(self):
 *         return self._mknp([p.y() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 269, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 269, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 269, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 269, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_y); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 269, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 269, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":268
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":271
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.yMin() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_83yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_82yMins, "Scatter3D.yMins(self)\nAll x low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_83yMins = {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_83yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_82yMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_83yMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_82yMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_82yMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMins", 0);

  /* "include/Scatter3D.pyx":273
 *     def yMins(self):
 *         """All x low values."""
 *         return self._mknp([p.yMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 273, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 273, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 273, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 273, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 273, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 273, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 273, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 273, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 273, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":271
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.yMin() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":275
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.yMax() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_85yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_84yMaxs, "Scatter3D.yMaxs(self)\nAll x high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_85yMaxs = {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_85yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_84yMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_85yMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_84yMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_84yMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMaxs", 0);

  /* "include/Scatter3D.pyx":277
 *     def yMaxs(self):
 *         """All x high values."""
 *         return self._mknp([p.yMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 277, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 277, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 277, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 277, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 277, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 277, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":275
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.yMax() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":279
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y errors"""
 *         return self._mknp([p.yErrs() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_87yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_86yErrs, "Scatter3D.yErrs(self)\nAll y errors");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_87yErrs = {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_87yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_86yErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_87yErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_86yErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_86yErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yErrs", 0);

  /* "include/Scatter3D.pyx":281
 *     def yErrs(self):
 *         """All y errors"""
 *         return self._mknp([p.yErrs() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def yMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 281, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 281, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 281, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 281, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_yErrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 281, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 281, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":279
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y errors"""
 *         return self._mknp([p.yErrs() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":283
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_89yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_88yMin, "Scatter3D.yMin(self)\nLowest x value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_89yMin = {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_89yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_88yMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_89yMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_88yMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_88yMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMin", 0);

  /* "include/Scatter3D.pyx":285
 *     def yMin(self):
 *         """Lowest x value."""
 *         return min(self.yMins())             # <<<<<<<<<<<<<<
 * 
 *     def yMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 285, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":283
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":287
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_91yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_90yMax, "Scatter3D.yMax(self)\nHighest y value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_91yMax = {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_91yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_90yMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_91yMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("yMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("yMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "yMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_90yMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_90yMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("yMax", 0);

  /* "include/Scatter3D.pyx":289
 *     def yMax(self):
 *         """Highest y value."""
 *         return max(self.yMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_yMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 289, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":287
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.yMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":292
 * 
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.z() for p in self.points()])
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_93zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_92zVals, "Scatter3D.zVals(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_93zVals = {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_93zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_92zVals};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_93zVals(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zVals (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zVals", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zVals", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_92zVals(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_92zVals(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zVals", 0);

  /* "include/Scatter3D.pyx":293
 * 
 *     def zVals(self):
 *         return self._mknp([p.z() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def zMins(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 293, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 293, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 293, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 293, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_z); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 293, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 293, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 293, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":292
 * 
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.z() for p in self.points()])
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zVals", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":295
 *         return self._mknp([p.z() for p in self.points()])
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp([p.zMin() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_95zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_94zMins, "Scatter3D.zMins(self)\nAll z low values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_95zMins = {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_95zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_94zMins};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_95zMins(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMins (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMins", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMins", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_94zMins(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_94zMins(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMins", 0);

  /* "include/Scatter3D.pyx":297
 *     def zMins(self):
 *         """All z low values."""
 *         return self._mknp([p.zMin() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def zMaxs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 297, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 297, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 297, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 297, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 297, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 297, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_zMin); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 297, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 297, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":295
 *         return self._mknp([p.z() for p in self.points()])
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp([p.zMin() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zMins", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":299
 *         return self._mknp([p.zMin() for p in self.points()])
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp([p.zMax() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_97zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_96zMaxs, "Scatter3D.zMaxs(self)\nAll z high values.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_97zMaxs = {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_97zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_96zMaxs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_97zMaxs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMaxs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMaxs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMaxs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_96zMaxs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_96zMaxs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMaxs", 0);

  /* "include/Scatter3D.pyx":301
 *     def zMaxs(self):
 *         """All z high values."""
 *         return self._mknp([p.zMax() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def zErrs(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 301, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 301, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 301, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 301, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 301, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_zMax); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 301, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":299
 *         return self._mknp([p.zMin() for p in self.points()])
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp([p.zMax() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zMaxs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":303
 *         return self._mknp([p.zMax() for p in self.points()])
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """All z errors"""
 *         return self._mknp([p.zErrs() for p in self.points()])
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_99zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_98zErrs, "Scatter3D.zErrs(self)\nAll z errors");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_99zErrs = {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_99zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_98zErrs};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_99zErrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zErrs (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zErrs", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zErrs", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_98zErrs(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_98zErrs(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_v_p = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zErrs", 0);

  /* "include/Scatter3D.pyx":305
 *     def zErrs(self):
 *         """All z errors"""
 *         return self._mknp([p.zErrs() for p in self.points()])             # <<<<<<<<<<<<<<
 * 
 *     def zMin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mknp); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_points); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
    if (likely(__pyx_t_6)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_5, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_6, };
    __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  }
  if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
    __pyx_t_5 = __pyx_t_4; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(30, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_9)) __PYX_ERR(30, 305, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 305, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 305, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(30, 305, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 305, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_9(__pyx_t_5);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(30, 305, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_zErrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(30, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_10 = NULL;
    __pyx_t_7 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_10)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_7 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_10, };
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_7, 0+__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(30, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(30, 305, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_7, 1+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":303
 *         return self._mknp([p.zMax() for p in self.points()])
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """All z errors"""
 *         return self._mknp([p.zErrs() for p in self.points()])
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zErrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_p);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":307
 *         return self._mknp([p.zErrs() for p in self.points()])
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_101zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_100zMin, "Scatter3D.zMin(self)\nLowest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_101zMin = {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_101zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_100zMin};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_101zMin(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMin (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMin", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMin", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_100zMin(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_100zMin(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMin", 0);

  /* "include/Scatter3D.pyx":309
 *     def zMin(self):
 *         """Lowest z value."""
 *         return min(self.zMins())             # <<<<<<<<<<<<<<
 * 
 *     def zMax(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMins); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_min, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":307
 *         return self._mknp([p.zErrs() for p in self.points()])
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zMin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Scatter3D.pyx":311
 *         return min(self.zMins())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs())
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_103zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_102zMax, "Scatter3D.zMax(self)\nHighest z value.");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_103zMax = {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_103zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_102zMax};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_103zMax(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("zMax (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("zMax", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "zMax", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_102zMax(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_102zMax(struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("zMax", 0);

  /* "include/Scatter3D.pyx":313
 *     def zMax(self):
 *         """Highest z value."""
 *         return max(self.zMaxs())             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_zMaxs); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(30, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_max, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Scatter3D.pyx":311
 *         return min(self.zMins())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs())
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.Scatter3D.zMax", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_105__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_104__reduce_cython__, "Scatter3D.__reduce_cython__(self)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_105__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_105__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_104__reduce_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_105__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  if (unlikely(__pyx_nargs > 0)) {
    __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL;}
  if (unlikely(__pyx_kwds) && __Pyx_NumKwargs_FASTCALL(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__reduce_cython__", 0))) return NULL;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_104__reduce_cython__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_104__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_107__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_9Scatter3D_106__setstate_cython__, "Scatter3D.__setstate_cython__(self, __pyx_state)");
static PyMethodDef __pyx_mdef_4yoda_4core_9Scatter3D_107__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_107__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_106__setstate_cython__};
static PyObject *__pyx_pw_4yoda_4core_9Scatter3D_107__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pyx_state,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_pyx_state)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 3, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__setstate_cython__") < 0)) __PYX_ERR(0, 3, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_9Scatter3D_106__setstate_cython__(((struct __pyx_obj_4yoda_4core_Scatter3D *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_9Scatter3D_106__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_4yoda_4core_Scatter3D *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 */
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_s_self__ptr_cannot_be_converted_to, 0, 0);
  __PYX_ERR(0, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Scatter3D.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":1
 * def mkScatter(ao, usefocus=False, p_usestddev=False, h_binsizediv=True, uflow_binwidth=-1., oflow_binwidth=-1.):             # <<<<<<<<<<<<<<
 *     """AnalysisObject -> Scatter{1,2,3}D
 *     Convert an AnalysisObject to a Scatter, using the logic of the bound mkScatter methods.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_9mkScatter(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_8mkScatter, "mkScatter(ao, usefocus=False, p_usestddev=False, h_binsizediv=True, uflow_binwidth=-1., oflow_binwidth=-1.)\nAnalysisObject -> Scatter{1,2,3}D\n    Convert an AnalysisObject to a Scatter, using the logic of the bound mkScatter methods.\n\n    All args other than the AO itself should be supplied as keywords rather than\n    positional, to avoid trouble since several (prefixed with a target-type\n    letter) only apply to specific types of supplied AO.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_9mkScatter = {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_8mkScatter};
static PyObject *__pyx_pw_4yoda_4core_9mkScatter(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ao = 0;
  PyObject *__pyx_v_usefocus = 0;
  PyObject *__pyx_v_p_usestddev = 0;
  PyObject *__pyx_v_h_binsizediv = 0;
  PyObject *__pyx_v_uflow_binwidth = 0;
  PyObject *__pyx_v_oflow_binwidth = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkScatter (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ao,&__pyx_n_s_usefocus,&__pyx_n_s_p_usestddev,&__pyx_n_s_h_binsizediv,&__pyx_n_s_uflow_binwidth,&__pyx_n_s_oflow_binwidth,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_False));
    values[2] = ((PyObject *)((PyObject *)Py_False));
    values[3] = ((PyObject *)((PyObject *)Py_True));
    values[4] = ((PyObject *)((PyObject*)__pyx_float_neg_1_));
    values[5] = ((PyObject *)((PyObject*)__pyx_float_neg_1_));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ao)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_usefocus);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_p_usestddev);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_h_binsizediv);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_uflow_binwidth);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  5:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_oflow_binwidth);
          if (value) { values[5] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 1, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkScatter") < 0)) __PYX_ERR(5, 1, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  6: values[5] = __Pyx_Arg_FASTCALL(__pyx_args, 5);
        CYTHON_FALLTHROUGH;
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ao = values[0];
    __pyx_v_usefocus = values[1];
    __pyx_v_p_usestddev = values[2];
    __pyx_v_h_binsizediv = values[3];
    __pyx_v_uflow_binwidth = values[4];
    __pyx_v_oflow_binwidth = values[5];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkScatter", 0, 1, 6, __pyx_nargs); __PYX_ERR(5, 1, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_8mkScatter(__pyx_self, __pyx_v_ao, __pyx_v_usefocus, __pyx_v_p_usestddev, __pyx_v_h_binsizediv, __pyx_v_uflow_binwidth, __pyx_v_oflow_binwidth);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_8mkScatter(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao, PyObject *__pyx_v_usefocus, PyObject *__pyx_v_p_usestddev, PyObject *__pyx_v_h_binsizediv, PyObject *__pyx_v_uflow_binwidth, PyObject *__pyx_v_oflow_binwidth) {
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkScatter", 0);

  /* "include/Functions.pyx":9
 *     letter) only apply to specific types of supplied AO.
 *     """
 *     s = None             # <<<<<<<<<<<<<<
 *     if ao.type() == "Histo1D":
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 */
  __Pyx_INCREF(Py_None);
  __pyx_v_s = Py_None;

  /* "include/Functions.pyx":10
 *     """
 *     s = None
 *     if ao.type() == "Histo1D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Histo2D":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 10, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Histo1D, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(5, 10, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/Functions.pyx":11
 *     s = None
 *     if ao.type() == "Histo1D":
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)             # <<<<<<<<<<<<<<
 *     elif ao.type() == "Histo2D":
 *         s = ao.mkScatter(usefocus, h_binsizediv)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_mkScatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 11, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_usefocus, __pyx_v_h_binsizediv, __pyx_v_uflow_binwidth, __pyx_v_oflow_binwidth};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 11, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Functions.pyx":10
 *     """
 *     s = None
 *     if ao.type() == "Histo1D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Histo2D":
 */
    goto __pyx_L3;
  }

  /* "include/Functions.pyx":12
 *     if ao.type() == "Histo1D":
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Histo2D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, h_binsizediv)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 12, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Histo2D, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(5, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/Functions.pyx":13
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Histo2D":
 *         s = ao.mkScatter(usefocus, h_binsizediv)             # <<<<<<<<<<<<<<
 * 
 *     elif ao.type() == "Profile1D":
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_mkScatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 13, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_usefocus, __pyx_v_h_binsizediv};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 13, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Functions.pyx":12
 *     if ao.type() == "Histo1D":
 *         s = ao.mkScatter(usefocus, h_binsizediv, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Histo2D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, h_binsizediv)
 * 
 */
    goto __pyx_L3;
  }

  /* "include/Functions.pyx":15
 *         s = ao.mkScatter(usefocus, h_binsizediv)
 * 
 *     elif ao.type() == "Profile1D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Profile2D":
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 15, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Profile1D, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(5, 15, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/Functions.pyx":16
 * 
 *     elif ao.type() == "Profile1D":
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)             # <<<<<<<<<<<<<<
 *     elif ao.type() == "Profile2D":
 *         s = ao.mkScatter(usefocus, p_usestddev)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_mkScatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 16, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[5] = {__pyx_t_3, __pyx_v_usefocus, __pyx_v_p_usestddev, __pyx_v_uflow_binwidth, __pyx_v_oflow_binwidth};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 4+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 16, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Functions.pyx":15
 *         s = ao.mkScatter(usefocus, h_binsizediv)
 * 
 *     elif ao.type() == "Profile1D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Profile2D":
 */
    goto __pyx_L3;
  }

  /* "include/Functions.pyx":17
 *     elif ao.type() == "Profile1D":
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Profile2D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, p_usestddev)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[1] = {__pyx_t_3, };
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 17, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_Profile2D, Py_EQ)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(5, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/Functions.pyx":18
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Profile2D":
 *         s = ao.mkScatter(usefocus, p_usestddev)             # <<<<<<<<<<<<<<
 * 
 *     else: # Counter and Scatters
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_mkScatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 18, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_3, __pyx_v_usefocus, __pyx_v_p_usestddev};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 2+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 18, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Functions.pyx":17
 *     elif ao.type() == "Profile1D":
 *         s = ao.mkScatter(usefocus, p_usestddev, uflow_binwidth, oflow_binwidth)
 *     elif ao.type() == "Profile2D":             # <<<<<<<<<<<<<<
 *         s = ao.mkScatter(usefocus, p_usestddev)
 * 
 */
    goto __pyx_L3;
  }

  /* "include/Functions.pyx":21
 * 
 *     else: # Counter and Scatters
 *         s = ao.mkScatter()             # <<<<<<<<<<<<<<
 * 
 *     return s
 */
  /*else*/ {
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao, __pyx_n_s_mkScatter); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 21, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_3, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 0+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __Pyx_DECREF_SET(__pyx_v_s, __pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "include/Functions.pyx":23
 *         s = ao.mkScatter()
 * 
 *     return s             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_s);
  __pyx_r = __pyx_v_s;
  goto __pyx_L0;

  /* "include/Functions.pyx":1
 * def mkScatter(ao, usefocus=False, p_usestddev=False, h_binsizediv=True, uflow_binwidth=-1., oflow_binwidth=-1.):             # <<<<<<<<<<<<<<
 *     """AnalysisObject -> Scatter{1,2,3}D
 *     Convert an AnalysisObject to a Scatter, using the logic of the bound mkScatter methods.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.mkScatter", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D
 *     Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_11divide(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_10divide, "divide(ao1, ao2)\n(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D\n    Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods.");
static PyMethodDef __pyx_mdef_4yoda_4core_11divide = {"divide", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11divide, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10divide};
static PyObject *__pyx_pw_4yoda_4core_11divide(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ao1 = 0;
  PyObject *__pyx_v_ao2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("divide (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ao1,&__pyx_n_s_ao2,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ao1)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 26, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ao2)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 26, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("divide", 1, 2, 2, 1); __PYX_ERR(5, 26, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "divide") < 0)) __PYX_ERR(5, 26, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_ao1 = values[0];
    __pyx_v_ao2 = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("divide", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 26, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.divide", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_10divide(__pyx_self, __pyx_v_ao1, __pyx_v_ao2);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_10divide(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ao1, PyObject *__pyx_v_ao2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("divide", 0);

  /* "include/Functions.pyx":29
 *     """(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D
 *     Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods."""
 *     return ao1.divideBy(ao2)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ao1, __pyx_n_s_divideBy); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_ao2};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D
 *     Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.divide", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":55
 * 
 * 
 * def linspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_13linspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_12linspace, "linspace(nbins, xmin, xmax)\n(int, float, float) -> list[float]\n    Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and\n    last edges on those boundaries.");
static PyMethodDef __pyx_mdef_4yoda_4core_13linspace = {"linspace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_13linspace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12linspace};
static PyObject *__pyx_pw_4yoda_4core_13linspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nbins = 0;
  PyObject *__pyx_v_xmin = 0;
  PyObject *__pyx_v_xmax = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("linspace (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 55, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmin)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 55, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, 1); __PYX_ERR(5, 55, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 55, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, 2); __PYX_ERR(5, 55, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "linspace") < 0)) __PYX_ERR(5, 55, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_nbins = values[0];
    __pyx_v_xmin = values[1];
    __pyx_v_xmax = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("linspace", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 55, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.linspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_12linspace(__pyx_self, __pyx_v_nbins, __pyx_v_xmin, __pyx_v_xmax);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_12linspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("linspace", 0);

  /* "include/Functions.pyx":59
 *     Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and
 *     last edges on those boundaries."""
 *     return c.linspace(nbins, xmin, xmax)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_nbins); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(5, 59, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xmin); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 59, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xmax); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 59, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_vector_to_py_double(YODA::linspace(__pyx_t_1, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":55
 * 
 * 
 * def linspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.linspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":62
 * 
 * 
 * def logspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_15logspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_14logspace, "logspace(nbins, xmin, xmax)\n(int, float, float) -> list[float]\n    Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with\n    the first and last edges on those boundaries.");
static PyMethodDef __pyx_mdef_4yoda_4core_15logspace = {"logspace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_15logspace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14logspace};
static PyObject *__pyx_pw_4yoda_4core_15logspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nbins = 0;
  PyObject *__pyx_v_xmin = 0;
  PyObject *__pyx_v_xmax = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("logspace (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 62, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmin)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 62, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, 1); __PYX_ERR(5, 62, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 62, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, 2); __PYX_ERR(5, 62, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "logspace") < 0)) __PYX_ERR(5, 62, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_nbins = values[0];
    __pyx_v_xmin = values[1];
    __pyx_v_xmax = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("logspace", 1, 3, 3, __pyx_nargs); __PYX_ERR(5, 62, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.logspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_14logspace(__pyx_self, __pyx_v_nbins, __pyx_v_xmin, __pyx_v_xmax);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_14logspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  size_t __pyx_t_1;
  double __pyx_t_2;
  double __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("logspace", 0);

  /* "include/Functions.pyx":66
 *     Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with
 *     the first and last edges on those boundaries."""
 *     return c.logspace(nbins, xmin, xmax)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_As_size_t(__pyx_v_nbins); if (unlikely((__pyx_t_1 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(5, 66, __pyx_L1_error)
  __pyx_t_2 = __pyx_PyFloat_AsDouble(__pyx_v_xmin); if (unlikely((__pyx_t_2 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 66, __pyx_L1_error)
  __pyx_t_3 = __pyx_PyFloat_AsDouble(__pyx_v_xmax); if (unlikely((__pyx_t_3 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 66, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_vector_to_py_double(YODA::logspace(__pyx_t_1, __pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":62
 * 
 * 
 * def logspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.logspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":69
 * 
 * 
 * def pdfspace(nbins, xmin, xmax, fn, nsample=10000):             # <<<<<<<<<<<<<<
 *     """(int, float, float, [int]) -> list[float]
 *     Make a list of n+1 bin edges spaced with density proportional to fn(x) between
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_17pdfspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_16pdfspace, "pdfspace(nbins, xmin, xmax, fn, nsample=10000)\n(int, float, float, [int]) -> list[float]\n    Make a list of n+1 bin edges spaced with density proportional to fn(x) between\n    xmin and xmax, with the first and last edges on those boundaries.\n\n    The density is manually integrated by the Trapezium Rule, using nsample linspace points.\n\n    Note: manually implemented in Python here rather than mapping the C++ version, since that\n    requires some awkward Cython shim work:\n    https://stackoverflow.com/questions/39044063/pass-a-closure-from-cython-to-c\n    https://github.com/cython/cython/tree/master/Demos/callback\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_17pdfspace = {"pdfspace", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_17pdfspace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_16pdfspace};
static PyObject *__pyx_pw_4yoda_4core_17pdfspace(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_nbins = 0;
  PyObject *__pyx_v_xmin = 0;
  PyObject *__pyx_v_xmax = 0;
  PyObject *__pyx_v_fn = 0;
  PyObject *__pyx_v_nsample = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pdfspace (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_nbins,&__pyx_n_s_xmin,&__pyx_n_s_xmax,&__pyx_n_s_fn,&__pyx_n_s_nsample,0};
    PyObject* values[5] = {0,0,0,0,0};
    values[4] = ((PyObject *)((PyObject *)__pyx_int_10000));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nbins)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 69, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmin)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 69, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 1); __PYX_ERR(5, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_xmax)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 69, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 2); __PYX_ERR(5, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (likely((values[3] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_fn)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 69, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, 3); __PYX_ERR(5, 69, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  4:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_nsample);
          if (value) { values[4] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 69, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "pdfspace") < 0)) __PYX_ERR(5, 69, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  5: values[4] = __Pyx_Arg_FASTCALL(__pyx_args, 4);
        CYTHON_FALLTHROUGH;
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_nbins = values[0];
    __pyx_v_xmin = values[1];
    __pyx_v_xmax = values[2];
    __pyx_v_fn = values[3];
    __pyx_v_nsample = values[4];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pdfspace", 0, 4, 5, __pyx_nargs); __PYX_ERR(5, 69, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.pdfspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_16pdfspace(__pyx_self, __pyx_v_nbins, __pyx_v_xmin, __pyx_v_xmax, __pyx_v_fn, __pyx_v_nsample);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_16pdfspace(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_nbins, PyObject *__pyx_v_xmin, PyObject *__pyx_v_xmax, PyObject *__pyx_v_fn, PyObject *__pyx_v_nsample) {
  PyObject *__pyx_v_dx = NULL;
  PyObject *__pyx_v_xs = NULL;
  PyObject *__pyx_v_ys = NULL;
  PyObject *__pyx_v_areas = NULL;
  PyObject *__pyx_v_da = NULL;
  PyObject *__pyx_v_asum = NULL;
  PyObject *__pyx_v_xedges = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_x = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  long __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pdfspace", 0);

  /* "include/Functions.pyx":81
 *     https://github.com/cython/cython/tree/master/Demos/callback
 *     """
 *     dx = (xmax-xmin)/float(nsample)             # <<<<<<<<<<<<<<
 *     xs = linspace(xmin, xmax, nsample+1)
 *     ys = [max(fn(x), 0) for x in xs]
 */
  __pyx_t_1 = PyNumber_Subtract(__pyx_v_xmax, __pyx_v_xmin); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyNumber_Float(__pyx_v_nsample); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_dx = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/Functions.pyx":82
 *     """
 *     dx = (xmax-xmin)/float(nsample)
 *     xs = linspace(xmin, xmax, nsample+1)             # <<<<<<<<<<<<<<
 *     ys = [max(fn(x), 0) for x in xs]
 *     areas = [(ys[i] + ys[i+1])*dx/2. for i in range(nsample)]
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_linspace); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_nsample, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = NULL;
  __pyx_t_5 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_5 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_4, __pyx_v_xmin, __pyx_v_xmax, __pyx_t_1};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_5, 3+__pyx_t_5);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 82, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_xs = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "include/Functions.pyx":83
 *     dx = (xmax-xmin)/float(nsample)
 *     xs = linspace(xmin, xmax, nsample+1)
 *     ys = [max(fn(x), 0) for x in xs]             # <<<<<<<<<<<<<<
 *     areas = [(ys[i] + ys[i+1])*dx/2. for i in range(nsample)]
 *     #areas = (ys[:-1] + ys[1:])*dx/2
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (likely(PyList_CheckExact(__pyx_v_xs)) || PyTuple_CheckExact(__pyx_v_xs)) {
    __pyx_t_2 = __pyx_v_xs; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_xs); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 83, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 83, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 83, __pyx_L1_error)
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 83, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        #endif
      }
    } else {
      __pyx_t_1 = __pyx_t_7(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(5, 83, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_8 = 0;
    __Pyx_INCREF(__pyx_v_fn);
    __pyx_t_4 = __pyx_v_fn; __pyx_t_9 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_v_x};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_9 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(5, 83, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = PyObject_RichCompare(__pyx_t_9, __pyx_t_1, Py_GT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(5, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (__pyx_t_11) {
      __pyx_t_10 = __Pyx_PyInt_From_long(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __pyx_t_4 = __pyx_t_10;
      __pyx_t_10 = 0;
    } else {
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = __pyx_t_1;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_4))) __PYX_ERR(5, 83, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_ys = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Functions.pyx":84
 *     xs = linspace(xmin, xmax, nsample+1)
 *     ys = [max(fn(x), 0) for x in xs]
 *     areas = [(ys[i] + ys[i+1])*dx/2. for i in range(nsample)]             # <<<<<<<<<<<<<<
 *     #areas = (ys[:-1] + ys[1:])*dx/2
 *     da = sum(areas)/nbins
 */
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_v_nsample); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 84, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 84, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 84, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 84, __pyx_L1_error)
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 84, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        #endif
      }
    } else {
      __pyx_t_2 = __pyx_t_7(__pyx_t_4);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(5, 84, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_GetItem(__pyx_v_ys, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_10 = __Pyx_PyObject_GetItem(__pyx_v_ys, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_10 = PyNumber_Multiply(__pyx_t_1, __pyx_v_dx); if (unlikely(!__pyx_t_10)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyFloat_DivideObjC(__pyx_t_10, __pyx_float_2_, 2., 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_t_1))) __PYX_ERR(5, 84, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_areas = ((PyObject*)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Functions.pyx":86
 *     areas = [(ys[i] + ys[i+1])*dx/2. for i in range(nsample)]
 *     #areas = (ys[:-1] + ys[1:])*dx/2
 *     da = sum(areas)/nbins             # <<<<<<<<<<<<<<
 *     asum = 0
 *     xedges = [xmin]
 */
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_sum, __pyx_v_areas); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_v_nbins); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_da = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "include/Functions.pyx":87
 *     #areas = (ys[:-1] + ys[1:])*dx/2
 *     da = sum(areas)/nbins
 *     asum = 0             # <<<<<<<<<<<<<<
 *     xedges = [xmin]
 *     for i in range(nsample-1):
 */
  __Pyx_INCREF(__pyx_int_0);
  __pyx_v_asum = __pyx_int_0;

  /* "include/Functions.pyx":88
 *     da = sum(areas)/nbins
 *     asum = 0
 *     xedges = [xmin]             # <<<<<<<<<<<<<<
 *     for i in range(nsample-1):
 *         asum += areas[i]
 */
  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_xmin);
  __Pyx_GIVEREF(__pyx_v_xmin);
  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_xmin);
  __pyx_v_xedges = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "include/Functions.pyx":89
 *     asum = 0
 *     xedges = [xmin]
 *     for i in range(nsample-1):             # <<<<<<<<<<<<<<
 *         asum += areas[i]
 *         if asum > da:
 */
  __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_v_nsample, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_range, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 89, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(5, 89, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 89, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely((0 < 0))) __PYX_ERR(5, 89, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 89, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_4);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(5, 89, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "include/Functions.pyx":90
 *     xedges = [xmin]
 *     for i in range(nsample-1):
 *         asum += areas[i]             # <<<<<<<<<<<<<<
 *         if asum > da:
 *             asum = 0
 */
    __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_areas, __pyx_v_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_asum, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 90, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF_SET(__pyx_v_asum, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/Functions.pyx":91
 *     for i in range(nsample-1):
 *         asum += areas[i]
 *         if asum > da:             # <<<<<<<<<<<<<<
 *             asum = 0
 *             xedges.append(xs[i+1])
 */
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_asum, __pyx_v_da, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 91, __pyx_L1_error)
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(5, 91, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_11) {

      /* "include/Functions.pyx":92
 *         asum += areas[i]
 *         if asum > da:
 *             asum = 0             # <<<<<<<<<<<<<<
 *             xedges.append(xs[i+1])
 *     xedges.append(xmax)
 */
      __Pyx_INCREF(__pyx_int_0);
      __Pyx_DECREF_SET(__pyx_v_asum, __pyx_int_0);

      /* "include/Functions.pyx":93
 *         if asum > da:
 *             asum = 0
 *             xedges.append(xs[i+1])             # <<<<<<<<<<<<<<
 *     xedges.append(xmax)
 *     assert(len(xedges) == nbins+1)
 */
      __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_xs, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_xedges, __pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(5, 93, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "include/Functions.pyx":91
 *     for i in range(nsample-1):
 *         asum += areas[i]
 *         if asum > da:             # <<<<<<<<<<<<<<
 *             asum = 0
 *             xedges.append(xs[i+1])
 */
    }

    /* "include/Functions.pyx":89
 *     asum = 0
 *     xedges = [xmin]
 *     for i in range(nsample-1):             # <<<<<<<<<<<<<<
 *         asum += areas[i]
 *         if asum > da:
 */
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "include/Functions.pyx":94
 *             asum = 0
 *             xedges.append(xs[i+1])
 *     xedges.append(xmax)             # <<<<<<<<<<<<<<
 *     assert(len(xedges) == nbins+1)
 *     return xedges
 */
  __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_xedges, __pyx_v_xmax); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(5, 94, __pyx_L1_error)

  /* "include/Functions.pyx":95
 *             xedges.append(xs[i+1])
 *     xedges.append(xmax)
 *     assert(len(xedges) == nbins+1)             # <<<<<<<<<<<<<<
 *     return xedges
 * 
 */
  #ifndef CYTHON_WITHOUT_ASSERTIONS
  if (unlikely(__pyx_assertions_enabled())) {
    __pyx_t_6 = PyList_GET_SIZE(__pyx_v_xedges); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(5, 95, __pyx_L1_error)
    __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_v_nbins, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(5, 95, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_11)) {
      __Pyx_Raise(__pyx_builtin_AssertionError, 0, 0, 0);
      __PYX_ERR(5, 95, __pyx_L1_error)
    }
  }
  #else
  if ((1)); else __PYX_ERR(5, 95, __pyx_L1_error)
  #endif

  /* "include/Functions.pyx":96
 *     xedges.append(xmax)
 *     assert(len(xedges) == nbins+1)
 *     return xedges             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_xedges);
  __pyx_r = __pyx_v_xedges;
  goto __pyx_L0;

  /* "include/Functions.pyx":69
 * 
 * 
 * def pdfspace(nbins, xmin, xmax, fn, nsample=10000):             # <<<<<<<<<<<<<<
 *     """(int, float, float, [int]) -> list[float]
 *     Make a list of n+1 bin edges spaced with density proportional to fn(x) between
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("yoda.core.pdfspace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_dx);
  __Pyx_XDECREF(__pyx_v_xs);
  __Pyx_XDECREF(__pyx_v_ys);
  __Pyx_XDECREF(__pyx_v_areas);
  __Pyx_XDECREF(__pyx_v_da);
  __Pyx_XDECREF(__pyx_v_asum);
  __Pyx_XDECREF(__pyx_v_xedges);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":99
 * 
 * 
 * def index_between(x, binedges):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the index of the bin which would contain x, or -1 if there is no enclosing
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_19index_between(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_18index_between, "index_between(x, binedges)\n(float, list[float]) -> int\n    Return the index of the bin which would contain x, or -1 if there is no enclosing\n    bin in the given set of n+1 bin edges.");
static PyMethodDef __pyx_mdef_4yoda_4core_19index_between = {"index_between", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_19index_between, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_18index_between};
static PyObject *__pyx_pw_4yoda_4core_19index_between(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  PyObject *__pyx_v_binedges = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("index_between (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_binedges,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 99, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_binedges)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 99, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("index_between", 1, 2, 2, 1); __PYX_ERR(5, 99, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "index_between") < 0)) __PYX_ERR(5, 99, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_x = values[0];
    __pyx_v_binedges = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("index_between", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 99, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.index_between", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_18index_between(__pyx_self, __pyx_v_x, __pyx_v_binedges);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_18index_between(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_binedges) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  std::vector<double>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("index_between", 0);

  /* "include/Functions.pyx":103
 *     Return the index of the bin which would contain x, or -1 if there is no enclosing
 *     bin in the given set of n+1 bin edges."""
 *     return c.index_between(x, binedges)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_PyFloat_AsDouble(__pyx_v_x); if (unlikely((__pyx_t_1 == (double)-1) && PyErr_Occurred())) __PYX_ERR(5, 103, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_double(__pyx_v_binedges); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 103, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyInt_From_int(YODA::index_between(__pyx_t_1, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":99
 * 
 * 
 * def index_between(x, binedges):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the index of the bin which would contain x, or -1 if there is no enclosing
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.index_between", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":106
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_21mean(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_20mean, "mean(sample)\n(list[float]) -> float\n    Return the unweighted mean of the entries in the provided sample list.");
static PyMethodDef __pyx_mdef_4yoda_4core_21mean = {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_21mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_20mean};
static PyObject *__pyx_pw_4yoda_4core_21mean(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sample = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mean (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sample)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 106, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mean") < 0)) __PYX_ERR(5, 106, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_sample = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mean", 1, 1, 1, __pyx_nargs); __PYX_ERR(5, 106, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_20mean(__pyx_self, __pyx_v_sample);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_20mean(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mean", 0);

  /* "include/Functions.pyx":109
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 *     return c.mean(sample)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_sample); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 109, __pyx_L1_error)
  __pyx_t_2 = PyFloat_FromDouble(YODA::mean(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":106
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.mean", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":112
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_23covariance(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_22covariance, "covariance(sample1, sample2)\n(list[float], list[float]) -> float\n    Return the unweighted covariance of the two provided sample lists.");
static PyMethodDef __pyx_mdef_4yoda_4core_23covariance = {"covariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_23covariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_22covariance};
static PyObject *__pyx_pw_4yoda_4core_23covariance(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sample1 = 0;
  PyObject *__pyx_v_sample2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("covariance (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sample1)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 112, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sample2)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 112, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("covariance", 1, 2, 2, 1); __PYX_ERR(5, 112, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "covariance") < 0)) __PYX_ERR(5, 112, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sample1 = values[0];
    __pyx_v_sample2 = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("covariance", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 112, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.covariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_22covariance(__pyx_self, __pyx_v_sample1, __pyx_v_sample2);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_22covariance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  std::vector<int>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("covariance", 0);

  /* "include/Functions.pyx":115
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 *     return c.covariance(sample1, sample2)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_sample1); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 115, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 115, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(YODA::covariance(__pyx_t_1, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":112
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.covariance", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/Functions.pyx":118
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_25correlation(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_24correlation, "correlation(sample1, sample2)\n(float, list[float]) -> int\n    Return the unweighted correlation of the two provided sample lists.");
static PyMethodDef __pyx_mdef_4yoda_4core_25correlation = {"correlation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_25correlation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_24correlation};
static PyObject *__pyx_pw_4yoda_4core_25correlation(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_sample1 = 0;
  PyObject *__pyx_v_sample2 = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("correlation (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_sample1,&__pyx_n_s_sample2,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sample1)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 118, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_sample2)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 118, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("correlation", 1, 2, 2, 1); __PYX_ERR(5, 118, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "correlation") < 0)) __PYX_ERR(5, 118, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_sample1 = values[0];
    __pyx_v_sample2 = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("correlation", 1, 2, 2, __pyx_nargs); __PYX_ERR(5, 118, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_24correlation(__pyx_self, __pyx_v_sample1, __pyx_v_sample2);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_24correlation(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_sample1, PyObject *__pyx_v_sample2) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::vector<int>  __pyx_t_1;
  std::vector<int>  __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("correlation", 0);

  /* "include/Functions.pyx":121
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 *     return c.correlation(sample1, sample2)             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_convert_vector_from_py_int(__pyx_v_sample1); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 121, __pyx_L1_error)
  __pyx_t_2 = __pyx_convert_vector_from_py_int(__pyx_v_sample2); if (unlikely(PyErr_Occurred())) __PYX_ERR(5, 121, __pyx_L1_error)
  __pyx_t_3 = PyFloat_FromDouble(YODA::correlation(__pyx_t_1, __pyx_t_2)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "include/Functions.pyx":118
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.correlation", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_27_pattern_check(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_26_pattern_check, "_pattern_check(name, patterns, unpatterns)");
static PyMethodDef __pyx_mdef_4yoda_4core_27_pattern_check = {"_pattern_check", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_27_pattern_check, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_26_pattern_check};
static PyObject *__pyx_pw_4yoda_4core_27_pattern_check(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_patterns = 0;
  PyObject *__pyx_v_unpatterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_pattern_check (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_name_2)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 17, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_patterns)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 17, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_pattern_check", 1, 3, 3, 1); __PYX_ERR(6, 17, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unpatterns)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 17, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_pattern_check", 1, 3, 3, 2); __PYX_ERR(6, 17, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_pattern_check") < 0)) __PYX_ERR(6, 17, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_name = values[0];
    __pyx_v_patterns = values[1];
    __pyx_v_unpatterns = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_pattern_check", 1, 3, 3, __pyx_nargs); __PYX_ERR(6, 17, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core._pattern_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_26_pattern_check(__pyx_self, __pyx_v_name, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_14_pattern_check_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/IO.pyx":23
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):             # <<<<<<<<<<<<<<
 *             return False
 *     if unpatterns:
 */

static PyObject *__pyx_pf_4yoda_4core_14_pattern_check_genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_6_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(6, 23, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_14_pattern_check_2generator4, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_pattern_check_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core._pattern_check.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_14_pattern_check_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 23, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(6, 23, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 23, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(6, 23, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 23, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(6, 23, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 23, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 23, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_patt);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_patt, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_re)) { __Pyx_RaiseClosureNameError("re"); __PYX_ERR(6, 23, __pyx_L1_error) }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_patt};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 23, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_search); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_name)) { __Pyx_RaiseClosureNameError("name"); __PYX_ERR(6, 23, __pyx_L1_error) }
    __pyx_t_5 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_name};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 23, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_4yoda_4core_14_pattern_check_5generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "include/IO.pyx":29
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):             # <<<<<<<<<<<<<<
 *             return False
 *     return True
 */

static PyObject *__pyx_pf_4yoda_4core_14_pattern_check_3genexpr(PyObject *__pyx_self, PyObject *__pyx_genexpr_arg_0) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_7_genexpr(__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(6, 29, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __pyx_cur_scope->__pyx_genexpr_arg_0 = __pyx_genexpr_arg_0;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_genexpr_arg_0);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_4yoda_4core_14_pattern_check_5generator5, NULL, (PyObject *) __pyx_cur_scope, __pyx_n_s_genexpr, __pyx_n_s_pattern_check_locals_genexpr, __pyx_n_s_yoda_core); if (unlikely(!gen)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core._pattern_check.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_4yoda_4core_14_pattern_check_5generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *__pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(6, 29, __pyx_L1_error)
  if (unlikely(!__pyx_cur_scope->__pyx_genexpr_arg_0)) { __Pyx_RaiseUnboundLocalError(".0"); __PYX_ERR(6, 29, __pyx_L1_error) }
  if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_genexpr_arg_0)) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_genexpr_arg_0; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_genexpr_arg_0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 29, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(6, 29, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 29, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      } else {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely((0 < 0))) __PYX_ERR(6, 29, __pyx_L1_error)
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 29, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        #endif
      }
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 29, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_patt);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_patt, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_re)) { __Pyx_RaiseClosureNameError("re"); __PYX_ERR(6, 29, __pyx_L1_error) }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_cur_scope->__pyx_v_patt};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_search); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_name)) { __Pyx_RaiseClosureNameError("name"); __PYX_ERR(6, 29, __pyx_L1_error) }
    __pyx_t_5 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_cur_scope->__pyx_outer_scope->__pyx_v_name};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 1+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 29, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_9) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */

static PyObject *__pyx_pf_4yoda_4core_26_pattern_check(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *__pyx_cur_scope;
  PyObject *__pyx_gb_4yoda_4core_14_pattern_check_2generator4 = 0;
  PyObject *__pyx_gb_4yoda_4core_14_pattern_check_5generator5 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_pattern_check", 0);
  __pyx_cur_scope = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_5__pattern_check(__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(6, 17, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_name = __pyx_v_name;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name);
  __Pyx_INCREF(__pyx_v_patterns);
  __Pyx_INCREF(__pyx_v_unpatterns);

  /* "include/IO.pyx":18
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):
 *     import re             # <<<<<<<<<<<<<<
 *     if patterns:
 *         if not isinstance(patterns, (list,tuple)):
 */
  __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_re, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_cur_scope->__pyx_v_re = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":19
 * def _pattern_check(name, patterns, unpatterns):
 *     import re
 *     if patterns:             # <<<<<<<<<<<<<<
 *         if not isinstance(patterns, (list,tuple)):
 *             patterns = [patterns]
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_patterns); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 19, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/IO.pyx":20
 *     import re
 *     if patterns:
 *         if not isinstance(patterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 */
    __pyx_t_3 = PyList_Check(__pyx_v_patterns); 
    if (!__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L5_bool_binop_done;
    }
    __pyx_t_3 = PyTuple_Check(__pyx_v_patterns); 
    __pyx_t_2 = __pyx_t_3;
    __pyx_L5_bool_binop_done:;
    __pyx_t_3 = (!__pyx_t_2);
    if (__pyx_t_3) {

      /* "include/IO.pyx":21
 *     if patterns:
 *         if not isinstance(patterns, (list,tuple)):
 *             patterns = [patterns]             # <<<<<<<<<<<<<<
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):
 */
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 21, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_patterns);
      __Pyx_GIVEREF(__pyx_v_patterns);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_patterns);
      __Pyx_DECREF_SET(__pyx_v_patterns, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "include/IO.pyx":20
 *     import re
 *     if patterns:
 *         if not isinstance(patterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 */
    }

    /* "include/IO.pyx":23
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):             # <<<<<<<<<<<<<<
 *             return False
 *     if unpatterns:
 */
    __pyx_t_1 = __pyx_pf_4yoda_4core_14_pattern_check_genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_patterns); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_Generator_Next(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 23, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_2 = (!__pyx_t_3);
    if (__pyx_t_2) {

      /* "include/IO.pyx":24
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):
 *             return False             # <<<<<<<<<<<<<<
 *     if unpatterns:
 *         if not isinstance(unpatterns, (list,tuple)):
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      goto __pyx_L0;

      /* "include/IO.pyx":23
 *             patterns = [patterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if not any(re.compile(patt).search(name) for patt in patterns):             # <<<<<<<<<<<<<<
 *             return False
 *     if unpatterns:
 */
    }

    /* "include/IO.pyx":19
 * def _pattern_check(name, patterns, unpatterns):
 *     import re
 *     if patterns:             # <<<<<<<<<<<<<<
 *         if not isinstance(patterns, (list,tuple)):
 *             patterns = [patterns]
 */
  }

  /* "include/IO.pyx":25
 *         if not any(re.compile(patt).search(name) for patt in patterns):
 *             return False
 *     if unpatterns:             # <<<<<<<<<<<<<<
 *         if not isinstance(unpatterns, (list,tuple)):
 *             unpatterns = [unpatterns]
 */
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_unpatterns); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 25, __pyx_L1_error)
  if (__pyx_t_2) {

    /* "include/IO.pyx":26
 *             return False
 *     if unpatterns:
 *         if not isinstance(unpatterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 */
    __pyx_t_3 = PyList_Check(__pyx_v_unpatterns); 
    if (!__pyx_t_3) {
    } else {
      __pyx_t_2 = __pyx_t_3;
      goto __pyx_L10_bool_binop_done;
    }
    __pyx_t_3 = PyTuple_Check(__pyx_v_unpatterns); 
    __pyx_t_2 = __pyx_t_3;
    __pyx_L10_bool_binop_done:;
    __pyx_t_3 = (!__pyx_t_2);
    if (__pyx_t_3) {

      /* "include/IO.pyx":27
 *     if unpatterns:
 *         if not isinstance(unpatterns, (list,tuple)):
 *             unpatterns = [unpatterns]             # <<<<<<<<<<<<<<
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 27, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_unpatterns);
      __Pyx_GIVEREF(__pyx_v_unpatterns);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_unpatterns);
      __Pyx_DECREF_SET(__pyx_v_unpatterns, __pyx_t_4);
      __pyx_t_4 = 0;

      /* "include/IO.pyx":26
 *             return False
 *     if unpatterns:
 *         if not isinstance(unpatterns, (list,tuple)):             # <<<<<<<<<<<<<<
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 */
    }

    /* "include/IO.pyx":29
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):             # <<<<<<<<<<<<<<
 *             return False
 *     return True
 */
    __pyx_t_4 = __pyx_pf_4yoda_4core_14_pattern_check_3genexpr(((PyObject*)__pyx_cur_scope), __pyx_v_unpatterns); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_Generator_Next(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 29, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_3) {

      /* "include/IO.pyx":30
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):
 *             return False             # <<<<<<<<<<<<<<
 *     return True
 * 
 */
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_False);
      __pyx_r = Py_False;
      goto __pyx_L0;

      /* "include/IO.pyx":29
 *             unpatterns = [unpatterns]
 *         ## Compile on the fly: works because compile(compiled_re) -> compiled_re
 *         if any(re.compile(patt).search(name) for patt in unpatterns):             # <<<<<<<<<<<<<<
 *             return False
 *     return True
 */
    }

    /* "include/IO.pyx":25
 *         if not any(re.compile(patt).search(name) for patt in patterns):
 *             return False
 *     if unpatterns:             # <<<<<<<<<<<<<<
 *         if not isinstance(unpatterns, (list,tuple)):
 *             unpatterns = [unpatterns]
 */
  }

  /* "include/IO.pyx":31
 *         if any(re.compile(patt).search(name) for patt in unpatterns):
 *             return False
 *     return True             # <<<<<<<<<<<<<<
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_True);
  __pyx_r = Py_True;
  goto __pyx_L0;

  /* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core._pattern_check", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_14_pattern_check_2generator4);
  __Pyx_XDECREF(__pyx_gb_4yoda_4core_14_pattern_check_5generator5);
  __Pyx_XDECREF(__pyx_v_patterns);
  __Pyx_XDECREF(__pyx_v_unpatterns);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":34
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 * cdef list _aobjects_to_list(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     cdef list out = []
 *     cdef c.AnalysisObject* ao
 */

static PyObject *__pyx_f_4yoda_4core__aobjects_to_list(std::vector<YODA::AnalysisObject *>  *__pyx_v_aobjects, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  PyObject *__pyx_v_out = 0;
  YODA::AnalysisObject *__pyx_v_ao;
  size_t __pyx_v_i;
  PyObject *__pyx_v_newao = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  std::vector<YODA::AnalysisObject *> ::size_type __pyx_t_2;
  std::vector<YODA::AnalysisObject *> ::size_type __pyx_t_3;
  size_t __pyx_t_4;
  std::string __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_aobjects_to_list", 0);

  /* "include/IO.pyx":35
 * ## Make a Python list of analysis objects from a C++ vector of them
 * cdef list _aobjects_to_list(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):
 *     cdef list out = []             # <<<<<<<<<<<<<<
 *     cdef c.AnalysisObject* ao
 *     cdef size_t i
 */
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":38
 *     cdef c.AnalysisObject* ao
 *     cdef size_t i
 *     for i in range(aobjects.size()):             # <<<<<<<<<<<<<<
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 */
  __pyx_t_2 = __pyx_v_aobjects->size();
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "include/IO.pyx":39
 *     cdef size_t i
 *     for i in range(aobjects.size()):
 *         ao = deref(aobjects)[i]             # <<<<<<<<<<<<<<
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls(globals()[ao.type()], ao)
 */
    __pyx_v_ao = ((*__pyx_v_aobjects)[__pyx_v_i]);

    /* "include/IO.pyx":41
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls(globals()[ao.type()], ao)             # <<<<<<<<<<<<<<
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out.append(newao)
 */
    __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    try {
      __pyx_t_5 = __pyx_v_ao->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 41, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(__pyx_t_7, __pyx_v_ao); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 41, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_newao, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/IO.pyx":42
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls(globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):             # <<<<<<<<<<<<<<
 *             out.append(newao)
 *     return out
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pattern_check); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 42, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_10 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_9, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 42, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __pyx_t_8 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_10 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_1, __pyx_v_patterns, __pyx_v_unpatterns};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 3+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 42, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(6, 42, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_11) {

      /* "include/IO.pyx":43
 *         newao = cutil.new_owned_cls(globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out.append(newao)             # <<<<<<<<<<<<<<
 *     return out
 * 
 */
      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_out, __pyx_v_newao); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(6, 43, __pyx_L1_error)

      /* "include/IO.pyx":42
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls(globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):             # <<<<<<<<<<<<<<
 *             out.append(newao)
 *     return out
 */
    }
  }

  /* "include/IO.pyx":44
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out.append(newao)
 *     return out             # <<<<<<<<<<<<<<
 * 
 * ## Make a Python dict of analysis objects from a C++ vector of them
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "include/IO.pyx":34
 * 
 * ## Make a Python list of analysis objects from a C++ vector of them
 * cdef list _aobjects_to_list(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     cdef list out = []
 *     cdef c.AnalysisObject* ao
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core._aobjects_to_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_newao);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":47
 * 
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     # from collections import OrderedDict
 */

static PyObject *__pyx_f_4yoda_4core__aobjects_to_dict(std::vector<YODA::AnalysisObject *>  *__pyx_v_aobjects, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  PyObject *__pyx_v_out = 0;
  YODA::AnalysisObject *__pyx_v_ao;
  size_t __pyx_v_i;
  PyObject *__pyx_v_newao = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  std::vector<YODA::AnalysisObject *> ::size_type __pyx_t_2;
  std::vector<YODA::AnalysisObject *> ::size_type __pyx_t_3;
  size_t __pyx_t_4;
  std::string __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_aobjects_to_dict", 0);

  /* "include/IO.pyx":48
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):
 *     cdef dict out = {}             # <<<<<<<<<<<<<<
 *     # from collections import OrderedDict
 *     # OrderedDict out = OrderedDict()
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":53
 *     cdef c.AnalysisObject* ao
 *     cdef size_t i
 *     for i in range(aobjects.size()):             # <<<<<<<<<<<<<<
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 */
  __pyx_t_2 = __pyx_v_aobjects->size();
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "include/IO.pyx":54
 *     cdef size_t i
 *     for i in range(aobjects.size()):
 *         ao = deref(aobjects)[i]             # <<<<<<<<<<<<<<
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls( globals()[ao.type()], ao)
 */
    __pyx_v_ao = ((*__pyx_v_aobjects)[__pyx_v_i]);

    /* "include/IO.pyx":56
 *         ao = deref(aobjects)[i]
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls( globals()[ao.type()], ao)             # <<<<<<<<<<<<<<
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out[newao.path()] = newao
 */
    __pyx_t_1 = __Pyx_Globals(); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    try {
      __pyx_t_5 = __pyx_v_ao->type();
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 56, __pyx_L1_error)
    }
    __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_Dict_GetItem(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __pyx_f_4yoda_4util_new_owned_cls(__pyx_t_7, __pyx_v_ao); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 56, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_XDECREF_SET(__pyx_v_newao, __pyx_t_6);
    __pyx_t_6 = 0;

    /* "include/IO.pyx":57
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls( globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):             # <<<<<<<<<<<<<<
 *             out[newao.path()] = newao
 *     return out
 */
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_pattern_check); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(6, 57, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_8);
      if (likely(__pyx_t_9)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_8, function);
        __pyx_t_10 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_9, };
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 57, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __pyx_t_8 = NULL;
    __pyx_t_10 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_7))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
      if (likely(__pyx_t_8)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_7, function);
        __pyx_t_10 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_1, __pyx_v_patterns, __pyx_v_unpatterns};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 3+__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 57, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    }
    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_11 < 0))) __PYX_ERR(6, 57, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_11) {

      /* "include/IO.pyx":58
 *         newao = cutil.new_owned_cls( globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out[newao.path()] = newao             # <<<<<<<<<<<<<<
 *     return out
 * 
 */
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_newao, __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
          __pyx_t_10 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_1, };
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+1-__pyx_t_10, 0+__pyx_t_10);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 58, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      if (unlikely((PyDict_SetItem(__pyx_v_out, __pyx_t_6, __pyx_v_newao) < 0))) __PYX_ERR(6, 58, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

      /* "include/IO.pyx":57
 *         ## NOTE: automatic type conversion by passing the type() as a key to globals()
 *         newao = cutil.new_owned_cls( globals()[ao.type()], ao)
 *         if _pattern_check(newao.path(), patterns, unpatterns):             # <<<<<<<<<<<<<<
 *             out[newao.path()] = newao
 *     return out
 */
    }
  }

  /* "include/IO.pyx":59
 *         if _pattern_check(newao.path(), patterns, unpatterns):
 *             out[newao.path()] = newao
 *     return out             # <<<<<<<<<<<<<<
 * 
 * ## Make a Python dict of dicts for file index from a C++ unordered_map of unordered_maps
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "include/IO.pyx":47
 * 
 * ## Make a Python dict of analysis objects from a C++ vector of them
 * cdef dict _aobjects_to_dict(vector[c.AnalysisObject*]* aobjects, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     # from collections import OrderedDict
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("yoda.core._aobjects_to_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_newao);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":62
 * 
 * ## Make a Python dict of dicts for file index from a C++ unordered_map of unordered_maps
 * cdef dict _idxMap_to_dict(unordered_map[string, unordered_map[string, int]]* idxMap):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, int]].iterator it = idxMap.begin()
 */

static PyObject *__pyx_f_4yoda_4core__idxMap_to_dict(std::unordered_map<std::string,std::unordered_map<std::string,int> >  *__pyx_v_idxMap) {
  PyObject *__pyx_v_out = 0;
  std::unordered_map<std::string,std::unordered_map<std::string,int> > ::iterator __pyx_v_it;
  PyObject *__pyx_v_innerDict = 0;
  std::unordered_map<std::string,int> ::iterator __pyx_v_it_inner;
  std::string __pyx_v_objType;
  std::unordered_map<std::string,int>  __pyx_v_nestedMap;
  std::string __pyx_v_path;
  int __pyx_v_binNum;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  std::string __pyx_t_3;
  std::unordered_map<std::string,int>  __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_idxMap_to_dict", 0);

  /* "include/IO.pyx":63
 * ## Make a Python dict of dicts for file index from a C++ unordered_map of unordered_maps
 * cdef dict _idxMap_to_dict(unordered_map[string, unordered_map[string, int]]* idxMap):
 *     cdef dict out = {}             # <<<<<<<<<<<<<<
 *     cdef unordered_map[string, unordered_map[string, int]].iterator it = idxMap.begin()
 *     cdef dict innerDict = {}
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":64
 * cdef dict _idxMap_to_dict(unordered_map[string, unordered_map[string, int]]* idxMap):
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, int]].iterator it = idxMap.begin()             # <<<<<<<<<<<<<<
 *     cdef dict innerDict = {}
 *     cdef unordered_map[string, int].iterator it_inner
 */
  __pyx_v_it = __pyx_v_idxMap->begin();

  /* "include/IO.pyx":65
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, int]].iterator it = idxMap.begin()
 *     cdef dict innerDict = {}             # <<<<<<<<<<<<<<
 *     cdef unordered_map[string, int].iterator it_inner
 * 
 */
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_innerDict = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":68
 *     cdef unordered_map[string, int].iterator it_inner
 * 
 *     while(it != idxMap.end()):             # <<<<<<<<<<<<<<
 *         objType = deref(it).first
 *         nestedMap = deref(it).second
 */
  while (1) {
    __pyx_t_2 = (__pyx_v_it != __pyx_v_idxMap->end());
    if (!__pyx_t_2) break;

    /* "include/IO.pyx":69
 * 
 *     while(it != idxMap.end()):
 *         objType = deref(it).first             # <<<<<<<<<<<<<<
 *         nestedMap = deref(it).second
 *         innerDict = {}
 */
    __pyx_t_3 = (*__pyx_v_it).first;
    __pyx_v_objType = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

    /* "include/IO.pyx":70
 *     while(it != idxMap.end()):
 *         objType = deref(it).first
 *         nestedMap = deref(it).second             # <<<<<<<<<<<<<<
 *         innerDict = {}
 *         it_inner = nestedMap.begin()
 */
    __pyx_t_4 = (*__pyx_v_it).second;
    __pyx_v_nestedMap = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_4);

    /* "include/IO.pyx":71
 *         objType = deref(it).first
 *         nestedMap = deref(it).second
 *         innerDict = {}             # <<<<<<<<<<<<<<
 *         it_inner = nestedMap.begin()
 * 
 */
    __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 71, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF_SET(__pyx_v_innerDict, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "include/IO.pyx":72
 *         nestedMap = deref(it).second
 *         innerDict = {}
 *         it_inner = nestedMap.begin()             # <<<<<<<<<<<<<<
 * 
 *         while(it_inner != nestedMap.end()):
 */
    __pyx_v_it_inner = __pyx_v_nestedMap.begin();

    /* "include/IO.pyx":74
 *         it_inner = nestedMap.begin()
 * 
 *         while(it_inner != nestedMap.end()):             # <<<<<<<<<<<<<<
 *             path = deref(it_inner).first
 *             binNum = deref(it_inner).second
 */
    while (1) {
      __pyx_t_2 = (__pyx_v_it_inner != __pyx_v_nestedMap.end());
      if (!__pyx_t_2) break;

      /* "include/IO.pyx":75
 * 
 *         while(it_inner != nestedMap.end()):
 *             path = deref(it_inner).first             # <<<<<<<<<<<<<<
 *             binNum = deref(it_inner).second
 *             innerDict[path] = binNum
 */
      __pyx_t_3 = (*__pyx_v_it_inner).first;
      __pyx_v_path = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

      /* "include/IO.pyx":76
 *         while(it_inner != nestedMap.end()):
 *             path = deref(it_inner).first
 *             binNum = deref(it_inner).second             # <<<<<<<<<<<<<<
 *             innerDict[path] = binNum
 *             inc(it_inner)
 */
      __pyx_t_5 = (*__pyx_v_it_inner).second;
      __pyx_v_binNum = __pyx_t_5;

      /* "include/IO.pyx":77
 *             path = deref(it_inner).first
 *             binNum = deref(it_inner).second
 *             innerDict[path] = binNum             # <<<<<<<<<<<<<<
 *             inc(it_inner)
 * 
 */
      __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_binNum); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_path); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (unlikely((PyDict_SetItem(__pyx_v_innerDict, __pyx_t_6, __pyx_t_1) < 0))) __PYX_ERR(6, 77, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "include/IO.pyx":78
 *             binNum = deref(it_inner).second
 *             innerDict[path] = binNum
 *             inc(it_inner)             # <<<<<<<<<<<<<<
 * 
 *         out[objType] = innerDict
 */
      (void)((++__pyx_v_it_inner));
    }

    /* "include/IO.pyx":80
 *             inc(it_inner)
 * 
 *         out[objType] = innerDict             # <<<<<<<<<<<<<<
 *         inc(it)
 * 
 */
    __pyx_t_1 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_objType); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 80, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_out, __pyx_t_1, __pyx_v_innerDict) < 0))) __PYX_ERR(6, 80, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "include/IO.pyx":81
 * 
 *         out[objType] = innerDict
 *         inc(it)             # <<<<<<<<<<<<<<
 * 
 *     return out
 */
    (void)((++__pyx_v_it));
  }

  /* "include/IO.pyx":83
 *         inc(it)
 * 
 *     return out             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "include/IO.pyx":62
 * 
 * ## Make a Python dict of dicts for file index from a C++ unordered_map of unordered_maps
 * cdef dict _idxMap_to_dict(unordered_map[string, unordered_map[string, int]]* idxMap):             # <<<<<<<<<<<<<<
 *     cdef dict out = {}
 *     cdef unordered_map[string, unordered_map[string, int]].iterator it = idxMap.begin()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core._idxMap_to_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_innerDict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":86
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_29_bytestr_from_file(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_28_bytestr_from_file, "_bytestr_from_file(file_or_filename)\n    Read a file's contents as a returned bytestring.\n\n    The file argument can either be a file object, filename, or\n    special \"-\" reference to stdin.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_29_bytestr_from_file = {"_bytestr_from_file", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_29_bytestr_from_file, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_28_bytestr_from_file};
static PyObject *__pyx_pw_4yoda_4core_29_bytestr_from_file(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_file_or_filename = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_bytestr_from_file (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 86, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_bytestr_from_file") < 0)) __PYX_ERR(6, 86, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_file_or_filename = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_bytestr_from_file", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 86, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core._bytestr_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_28_bytestr_from_file(__pyx_self, __pyx_v_file_or_filename);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_28_bytestr_from_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename) {
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bytestr_from_file", 0);

  /* "include/IO.pyx":93
 *     special "-" reference to stdin.
 *     """
 *     if hasattr(file_or_filename, "read"):             # <<<<<<<<<<<<<<
 *         s = file_or_filename.read()
 *     elif file_or_filename == "-":
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_file_or_filename, __pyx_n_s_read); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 93, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":94
 *     """
 *     if hasattr(file_or_filename, "read"):
 *         s = file_or_filename.read()             # <<<<<<<<<<<<<<
 *     elif file_or_filename == "-":
 *         s = sys.stdin.buffer.read()
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_file_or_filename, __pyx_n_s_read); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 94, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_4, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_v_s = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/IO.pyx":93
 *     special "-" reference to stdin.
 *     """
 *     if hasattr(file_or_filename, "read"):             # <<<<<<<<<<<<<<
 *         s = file_or_filename.read()
 *     elif file_or_filename == "-":
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":95
 *     if hasattr(file_or_filename, "read"):
 *         s = file_or_filename.read()
 *     elif file_or_filename == "-":             # <<<<<<<<<<<<<<
 *         s = sys.stdin.buffer.read()
 *     else:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_file_or_filename, __pyx_kp_s__8, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 95, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":96
 *         s = file_or_filename.read()
 *     elif file_or_filename == "-":
 *         s = sys.stdin.buffer.read()             # <<<<<<<<<<<<<<
 *     else:
 *         with open(file_or_filename, "rb") as f:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_stdin); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_buffer); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 96, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_3, };
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_v_s = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "include/IO.pyx":95
 *     if hasattr(file_or_filename, "read"):
 *         s = file_or_filename.read()
 *     elif file_or_filename == "-":             # <<<<<<<<<<<<<<
 *         s = sys.stdin.buffer.read()
 *     else:
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":98
 *         s = sys.stdin.buffer.read()
 *     else:
 *         with open(file_or_filename, "rb") as f:             # <<<<<<<<<<<<<<
 *             s = f.read()
 *     if type(s) is str:
 */
  /*else*/ {
    /*with:*/ {
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_file_or_filename);
      __Pyx_GIVEREF(__pyx_v_file_or_filename);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_file_or_filename);
      __Pyx_INCREF(__pyx_n_s_rb);
      __Pyx_GIVEREF(__pyx_n_s_rb);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_rb);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 98, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_7, };
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 98, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_t_3 = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          /*try:*/ {
            __pyx_v_f = __pyx_t_3;
            __pyx_t_3 = 0;

            /* "include/IO.pyx":99
 *     else:
 *         with open(file_or_filename, "rb") as f:
 *             s = f.read()             # <<<<<<<<<<<<<<
 *     if type(s) is str:
 *         s = s.encode("utf-8")
 */
            __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_read); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 99, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_2 = NULL;
            __pyx_t_5 = 0;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_4, function);
                __pyx_t_5 = 1;
              }
            }
            {
              PyObject *__pyx_callargs[1] = {__pyx_t_2, };
              __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 99, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_3);
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            }
            __pyx_v_s = __pyx_t_3;
            __pyx_t_3 = 0;

            /* "include/IO.pyx":98
 *         s = sys.stdin.buffer.read()
 *     else:
 *         with open(file_or_filename, "rb") as f:             # <<<<<<<<<<<<<<
 *             s = f.read()
 *     if type(s) is str:
 */
          }
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          goto __pyx_L13_try_end;
          __pyx_L8_error:;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("yoda.core._bytestr_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_3, &__pyx_t_4, &__pyx_t_2) < 0) __PYX_ERR(6, 98, __pyx_L10_except_error)
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_4);
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_7 = PyTuple_Pack(3, __pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 98, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 98, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (__pyx_t_1 < 0) __PYX_ERR(6, 98, __pyx_L10_except_error)
            __pyx_t_12 = (!__pyx_t_1);
            if (unlikely(__pyx_t_12)) {
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_XGIVEREF(__pyx_t_2);
              __Pyx_ErrRestoreWithState(__pyx_t_3, __pyx_t_4, __pyx_t_2);
              __pyx_t_3 = 0; __pyx_t_4 = 0; __pyx_t_2 = 0; 
              __PYX_ERR(6, 98, __pyx_L10_except_error)
            }
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            goto __pyx_L9_exception_handled;
          }
          __pyx_L10_except_error:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          goto __pyx_L1_error;
          __pyx_L9_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          __pyx_L13_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_6) {
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__9, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 98, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
      goto __pyx_L17;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L1_error;
      __pyx_L17:;
    }
  }
  __pyx_L3:;

  /* "include/IO.pyx":100
 *         with open(file_or_filename, "rb") as f:
 *             s = f.read()
 *     if type(s) is str:             # <<<<<<<<<<<<<<
 *         s = s.encode("utf-8")
 *     return s
 */
  if (unlikely(!__pyx_v_s)) { __Pyx_RaiseUnboundLocalError("s"); __PYX_ERR(6, 100, __pyx_L1_error) }
  __pyx_t_12 = (((PyObject *)Py_TYPE(__pyx_v_s)) == ((PyObject *)(&PyString_Type)));
  if (__pyx_t_12) {

    /* "include/IO.pyx":101
 *             s = f.read()
 *     if type(s) is str:
 *         s = s.encode("utf-8")             # <<<<<<<<<<<<<<
 *     return s
 * 
 */
    if (unlikely(!__pyx_v_s)) { __Pyx_RaiseUnboundLocalError("s"); __PYX_ERR(6, 101, __pyx_L1_error) }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 101, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_kp_s_utf_8};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "include/IO.pyx":100
 *         with open(file_or_filename, "rb") as f:
 *             s = f.read()
 *     if type(s) is str:             # <<<<<<<<<<<<<<
 *         s = s.encode("utf-8")
 *     return s
 */
  }

  /* "include/IO.pyx":102
 *     if type(s) is str:
 *         s = s.encode("utf-8")
 *     return s             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  if (unlikely(!__pyx_v_s)) { __Pyx_RaiseUnboundLocalError("s"); __PYX_ERR(6, 102, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_v_s);
  __pyx_r = __pyx_v_s;
  goto __pyx_L0;

  /* "include/IO.pyx":86
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core._bytestr_from_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":105
 * 
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_31_str_to_file(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_30_str_to_file, "_str_to_file(s, file_or_filename)\n    Write a string to a file.\n\n    The file argument can either be a file object, filename, or\n    special \"-\" reference to stdout.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_31_str_to_file = {"_str_to_file", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_31_str_to_file, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_30_str_to_file};
static PyObject *__pyx_pw_4yoda_4core_31_str_to_file(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_s = 0;
  PyObject *__pyx_v_file_or_filename = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_str_to_file (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_s,&__pyx_n_s_file_or_filename,0};
    PyObject* values[2] = {0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_s)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 105, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 105, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("_str_to_file", 1, 2, 2, 1); __PYX_ERR(6, 105, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_str_to_file") < 0)) __PYX_ERR(6, 105, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
    }
    __pyx_v_s = values[0];
    __pyx_v_file_or_filename = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_str_to_file", 1, 2, 2, __pyx_nargs); __PYX_ERR(6, 105, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core._str_to_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_30_str_to_file(__pyx_self, __pyx_v_s, __pyx_v_file_or_filename);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_30_str_to_file(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_s, PyObject *__pyx_v_file_or_filename) {
  PyObject *__pyx_v_f = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_str_to_file", 0);

  /* "include/IO.pyx":112
 *     special "-" reference to stdout.
 *     """
 *     if hasattr(file_or_filename, "write"):             # <<<<<<<<<<<<<<
 *         file_or_filename.write(s)
 *     elif file_or_filename == "-":
 */
  __pyx_t_1 = __Pyx_HasAttr(__pyx_v_file_or_filename, __pyx_n_s_write); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(6, 112, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":113
 *     """
 *     if hasattr(file_or_filename, "write"):
 *         file_or_filename.write(s)             # <<<<<<<<<<<<<<
 *     elif file_or_filename == "-":
 *         sys.stdout.write(s)
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_file_or_filename, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_s};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "include/IO.pyx":112
 *     special "-" reference to stdout.
 *     """
 *     if hasattr(file_or_filename, "write"):             # <<<<<<<<<<<<<<
 *         file_or_filename.write(s)
 *     elif file_or_filename == "-":
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":114
 *     if hasattr(file_or_filename, "write"):
 *         file_or_filename.write(s)
 *     elif file_or_filename == "-":             # <<<<<<<<<<<<<<
 *         sys.stdout.write(s)
 *     else:
 */
  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_file_or_filename, __pyx_kp_s__8, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(6, 114, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "include/IO.pyx":115
 *         file_or_filename.write(s)
 *     elif file_or_filename == "-":
 *         sys.stdout.write(s)             # <<<<<<<<<<<<<<
 *     else:
 *         with open(file_or_filename, "w") as f:
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_sys); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_stdout); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 115, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = NULL;
    __pyx_t_5 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_4)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_5 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_s};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "include/IO.pyx":114
 *     if hasattr(file_or_filename, "write"):
 *         file_or_filename.write(s)
 *     elif file_or_filename == "-":             # <<<<<<<<<<<<<<
 *         sys.stdout.write(s)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":117
 *         sys.stdout.write(s)
 *     else:
 *         with open(file_or_filename, "w") as f:             # <<<<<<<<<<<<<<
 *             f.write(s)
 * 
 */
  /*else*/ {
    /*with:*/ {
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 117, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_v_file_or_filename);
      __Pyx_GIVEREF(__pyx_v_file_or_filename);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_file_or_filename);
      __Pyx_INCREF(__pyx_n_s_w);
      __Pyx_GIVEREF(__pyx_n_s_w);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_n_s_w);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 117, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_6 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 117, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyObject_LookupSpecial(__pyx_t_3, __pyx_n_s_enter); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 117, __pyx_L4_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_5 = 1;
        }
      }
      {
        PyObject *__pyx_callargs[1] = {__pyx_t_7, };
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_5, 0+__pyx_t_5);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 117, __pyx_L4_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __pyx_t_4 = __pyx_t_2;
      __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      /*try:*/ {
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          /*try:*/ {
            __pyx_v_f = __pyx_t_4;
            __pyx_t_4 = 0;

            /* "include/IO.pyx":118
 *     else:
 *         with open(file_or_filename, "w") as f:
 *             f.write(s)             # <<<<<<<<<<<<<<
 * 
 * 
 */
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_f, __pyx_n_s_write); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 118, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_2 = NULL;
            __pyx_t_5 = 0;
            if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_2)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_2);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
                __pyx_t_5 = 1;
              }
            }
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_s};
              __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_5, 1+__pyx_t_5);
              __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
              if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 118, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_4);
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            }
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

            /* "include/IO.pyx":117
 *         sys.stdout.write(s)
 *     else:
 *         with open(file_or_filename, "w") as f:             # <<<<<<<<<<<<<<
 *             f.write(s)
 * 
 */
          }
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          goto __pyx_L13_try_end;
          __pyx_L8_error:;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          /*except:*/ {
            __Pyx_AddTraceback("yoda.core._str_to_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_3, &__pyx_t_2) < 0) __PYX_ERR(6, 117, __pyx_L10_except_error)
            __Pyx_XGOTREF(__pyx_t_4);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_7 = PyTuple_Pack(3, __pyx_t_4, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 117, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_7);
            __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 117, __pyx_L10_except_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_11);
            __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            if (__pyx_t_1 < 0) __PYX_ERR(6, 117, __pyx_L10_except_error)
            __pyx_t_12 = (!__pyx_t_1);
            if (unlikely(__pyx_t_12)) {
              __Pyx_GIVEREF(__pyx_t_4);
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_XGIVEREF(__pyx_t_2);
              __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_3, __pyx_t_2);
              __pyx_t_4 = 0; __pyx_t_3 = 0; __pyx_t_2 = 0; 
              __PYX_ERR(6, 117, __pyx_L10_except_error)
            }
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            goto __pyx_L9_exception_handled;
          }
          __pyx_L10_except_error:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          goto __pyx_L1_error;
          __pyx_L9_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ExceptionReset(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          __pyx_L13_try_end:;
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          if (__pyx_t_6) {
            __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__9, NULL);
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 117, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_10);
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          }
          goto __pyx_L7;
        }
        __pyx_L7:;
      }
      goto __pyx_L17;
      __pyx_L4_error:;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      goto __pyx_L1_error;
      __pyx_L17:;
    }
  }
  __pyx_L3:;

  /* "include/IO.pyx":105
 * 
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("yoda.core._str_to_file", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_f);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":121
 * 
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_33_istxt(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_32_istxt, "_istxt(x)");
static PyMethodDef __pyx_mdef_4yoda_4core_33_istxt = {"_istxt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_33_istxt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_32_istxt};
static PyObject *__pyx_pw_4yoda_4core_33_istxt(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_istxt (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 121, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_istxt") < 0)) __PYX_ERR(6, 121, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_istxt", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 121, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core._istxt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_32_istxt(__pyx_self, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_32_istxt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_istxt", 0);

  /* "include/IO.pyx":122
 * 
 * def _istxt(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return type(x) in [unicode, str]
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_tuple__10, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "include/IO.pyx":123
 * def _istxt(x):
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]             # <<<<<<<<<<<<<<
 *     else:
 *         return type(x) is str
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(((PyObject *)Py_TYPE(__pyx_v_x)));
    __pyx_t_1 = ((PyObject *)Py_TYPE(__pyx_v_x));
    __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_t_1), ((PyObject *)(&PyUnicode_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 123, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(6, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!__pyx_t_4) {
    } else {
      __pyx_t_3 = __pyx_t_4;
      goto __pyx_L4_bool_binop_done;
    }
    __pyx_t_2 = PyObject_RichCompare(((PyObject *)__pyx_t_1), ((PyObject *)(&PyString_Type)), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 123, __pyx_L1_error)
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(6, 123, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __pyx_t_4;
    __pyx_L4_bool_binop_done:;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/IO.pyx":122
 * 
 * def _istxt(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return type(x) in [unicode, str]
 *     else:
 */
  }

  /* "include/IO.pyx":125
 *         return type(x) in [unicode, str]
 *     else:
 *         return type(x) is str             # <<<<<<<<<<<<<<
 * 
 * def _mktxtifstr(x):
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v_x)) == ((PyObject *)(&PyString_Type)));
    __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 125, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;
  }

  /* "include/IO.pyx":121
 * 
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core._istxt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":127
 *         return type(x) is str
 * 
 * def _mktxtifstr(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_35_mktxtifstr(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_34_mktxtifstr, "_mktxtifstr(x)");
static PyMethodDef __pyx_mdef_4yoda_4core_35_mktxtifstr = {"_mktxtifstr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_35_mktxtifstr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_34_mktxtifstr};
static PyObject *__pyx_pw_4yoda_4core_35_mktxtifstr(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_mktxtifstr (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_x)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 127, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "_mktxtifstr") < 0)) __PYX_ERR(6, 127, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_x = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_mktxtifstr", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 127, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core._mktxtifstr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_34_mktxtifstr(__pyx_self, __pyx_v_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_34_mktxtifstr(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_mktxtifstr", 0);

  /* "include/IO.pyx":128
 * 
 * def _mktxtifstr(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return unicode(x) if type(x) is str else x
 *     return x
 */
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_sys); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_version_info); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_tuple__10, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(6, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "include/IO.pyx":129
 * def _mktxtifstr(x):
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x             # <<<<<<<<<<<<<<
 *     return x
 * 
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = (((PyObject *)Py_TYPE(__pyx_v_x)) == ((PyObject *)(&PyString_Type)));
    if (__pyx_t_3) {
      __pyx_t_2 = __Pyx_PyObject_Unicode(__pyx_v_x); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 129, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __pyx_t_2;
      __pyx_t_2 = 0;
    } else {
      __Pyx_INCREF(__pyx_v_x);
      __pyx_t_1 = __pyx_v_x;
    }
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "include/IO.pyx":128
 * 
 * def _mktxtifstr(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return unicode(x) if type(x) is str else x
 *     return x
 */
  }

  /* "include/IO.pyx":130
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x
 *     return x             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_x);
  __pyx_r = __pyx_v_x;
  goto __pyx_L0;

  /* "include/IO.pyx":127
 *         return type(x) is str
 * 
 * def _mktxtifstr(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core._mktxtifstr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":138
 * ##
 * 
 * def read(filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_37read(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_36read, "read(filename, asdict=True, patterns=None, unpatterns=None)\n\n    Read data objects from the provided filename, auto-determining the format\n    from the file extension.\n\n    The loaded data objects can be filtered on their path strings, using the\n    optional patterns and unpatterns arguments. These can be strings, compiled\n    regex objects with a 'match' method, or any iterable of those types. If\n    given, only analyses with paths which match at least one pattern, and do not\n    match any unpatterns, will be returned.\n\n    Returns a dict or list of analysis objects depending on the asdict argument.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_37read = {"read", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_37read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_36read};
static PyObject *__pyx_pw_4yoda_4core_37read(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_asdict = 0;
  PyObject *__pyx_v_patterns = 0;
  PyObject *__pyx_v_unpatterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_True));
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 138, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asdict);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_patterns);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 138, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unpatterns);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 138, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "read") < 0)) __PYX_ERR(6, 138, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_filename = values[0];
    __pyx_v_asdict = values[1];
    __pyx_v_patterns = values[2];
    __pyx_v_unpatterns = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 138, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_36read(__pyx_self, __pyx_v_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_36read(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  std::vector<YODA::AnalysisObject *>  __pyx_v_aobjects;
  std::istringstream __pyx_v_iss;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_v_d = NULL;
  PyObject *__pyx_v_collections = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  std::string __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read", 0);
  __Pyx_INCREF(__pyx_v_filename);

  /* "include/IO.pyx":153
 *     cdef vector[c.AnalysisObject*] aobjects
 *     cdef c.istringstream iss
 *     filename = _mktxtifstr(filename)             # <<<<<<<<<<<<<<
 *     if _istxt(filename):
 *         c.IO_read_from_file(filename, aobjects)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_mktxtifstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 153, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 153, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "include/IO.pyx":154
 *     cdef c.istringstream iss
 *     filename = _mktxtifstr(filename)
 *     if _istxt(filename):             # <<<<<<<<<<<<<<
 *         c.IO_read_from_file(filename, aobjects)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_istxt); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_5) {

    /* "include/IO.pyx":155
 *     filename = _mktxtifstr(filename)
 *     if _istxt(filename):
 *         c.IO_read_from_file(filename, aobjects)             # <<<<<<<<<<<<<<
 *     else:
 *         s = _bytestr_from_file(filename)
 */
    __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 155, __pyx_L1_error)
    try {
      YODA::read(__pyx_t_6, __pyx_v_aobjects);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 155, __pyx_L1_error)
    }

    /* "include/IO.pyx":154
 *     cdef c.istringstream iss
 *     filename = _mktxtifstr(filename)
 *     if _istxt(filename):             # <<<<<<<<<<<<<<
 *         c.IO_read_from_file(filename, aobjects)
 *     else:
 */
    goto __pyx_L3;
  }

  /* "include/IO.pyx":157
 *         c.IO_read_from_file(filename, aobjects)
 *     else:
 *         s = _bytestr_from_file(filename)             # <<<<<<<<<<<<<<
 *         iss.str(s)
 *         #_make_iss(iss, s)
 */
  /*else*/ {
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 157, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = NULL;
    __pyx_t_4 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
      if (likely(__pyx_t_3)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_2, function);
        __pyx_t_4 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_filename};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_v_s = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "include/IO.pyx":158
 *     else:
 *         s = _bytestr_from_file(filename)
 *         iss.str(s)             # <<<<<<<<<<<<<<
 *         #_make_iss(iss, s)
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda')
 */
    __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 158, __pyx_L1_error)
    (void)(__pyx_v_iss.str(__pyx_t_6));

    /* "include/IO.pyx":160
 *         iss.str(s)
 *         #_make_iss(iss, s)
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda')             # <<<<<<<<<<<<<<
 * 
 *     if asdict:
 */
    __pyx_t_6 = __pyx_convert_string_from_py_std__in_string(__pyx_n_b_yoda); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 160, __pyx_L1_error)
    try {
      YODA::read(__pyx_v_iss, __pyx_v_aobjects, __pyx_t_6);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 160, __pyx_L1_error)
    }
  }
  __pyx_L3:;

  /* "include/IO.pyx":162
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda')
 * 
 *     if asdict:             # <<<<<<<<<<<<<<
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:
 */
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(6, 162, __pyx_L1_error)
  if (__pyx_t_5) {

    /* "include/IO.pyx":163
 * 
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 *         try:
 *             import collections
 */
    __pyx_t_1 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_d = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "include/IO.pyx":164
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:             # <<<<<<<<<<<<<<
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 */
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_9);
      /*try:*/ {

        /* "include/IO.pyx":165
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:
 *             import collections             # <<<<<<<<<<<<<<
 *             return collections.OrderedDict(sorted(d.items()))
 *         except:
 */
        __pyx_t_1 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_collections, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 165, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_v_collections = __pyx_t_1;
        __pyx_t_1 = 0;

        /* "include/IO.pyx":166
 *         try:
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))             # <<<<<<<<<<<<<<
 *         except:
 *             return d
 */
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_collections, __pyx_n_s_OrderedDict); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 166, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (unlikely(__pyx_v_d == Py_None)) {
          PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items");
          __PYX_ERR(6, 166, __pyx_L5_error)
        }
        __pyx_t_10 = __Pyx_PyDict_Items(__pyx_v_d); if (unlikely(!__pyx_t_10)) __PYX_ERR(6, 166, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = PySequence_List(__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 166, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_3 = ((PyObject*)__pyx_t_11);
        __pyx_t_11 = 0;
        __pyx_t_12 = PyList_Sort(__pyx_t_3); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(6, 166, __pyx_L5_error)
        __pyx_t_11 = NULL;
        __pyx_t_4 = 0;
        if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
            __pyx_t_4 = 1;
          }
        }
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_11, __pyx_t_3};
          __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 166, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L9_try_return;

        /* "include/IO.pyx":164
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:             # <<<<<<<<<<<<<<
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 */
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "include/IO.pyx":167
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 *         except:             # <<<<<<<<<<<<<<
 *             return d
 *     else:
 */
      /*except:*/ {
        __Pyx_AddTraceback("yoda.core.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
        if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(6, 167, __pyx_L7_except_error)
        __Pyx_XGOTREF(__pyx_t_1);
        __Pyx_XGOTREF(__pyx_t_2);
        __Pyx_XGOTREF(__pyx_t_3);

        /* "include/IO.pyx":168
 *             return collections.OrderedDict(sorted(d.items()))
 *         except:
 *             return d             # <<<<<<<<<<<<<<
 *     else:
 *         return _aobjects_to_list(&aobjects, patterns, unpatterns)
 */
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_d);
        __pyx_r = __pyx_v_d;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L8_except_return;
      }

      /* "include/IO.pyx":164
 *     if asdict:
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:             # <<<<<<<<<<<<<<
 *             import collections
 *             return collections.OrderedDict(sorted(d.items()))
 */
      __pyx_L7_except_error:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L1_error;
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
      __pyx_L8_except_return:;
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_XGIVEREF(__pyx_t_9);
      __Pyx_ExceptionReset(__pyx_t_7, __pyx_t_8, __pyx_t_9);
      goto __pyx_L0;
    }

    /* "include/IO.pyx":162
 *         c.IO_read_from_stringstream(iss, aobjects, 'yoda')
 * 
 *     if asdict:             # <<<<<<<<<<<<<<
 *         d = _aobjects_to_dict(&aobjects, patterns, unpatterns)
 *         try:
 */
  }

  /* "include/IO.pyx":170
 *             return d
 *     else:
 *         return _aobjects_to_list(&aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "include/IO.pyx":138
 * ##
 * 
 * def read(filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_d);
  __Pyx_XDECREF(__pyx_v_collections);
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":173
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_39readYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_38readYODA, "readYODA(file_or_filename, asdict=True, patterns=None, unpatterns=None)\n\n    Read data objects from the provided YODA-format file.\n\n    The loaded data objects can be filtered on their path strings, using the\n    optional patterns and unpatterns arguments. These can be strings, compiled\n    regex objects with a 'match' method, or any iterable of those types. If\n    given, only analyses with paths which match at least one pattern, and do not\n    match any unpatterns, will be returned.\n\n    Returns a dict or list of analysis objects depending on the asdict argument.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_39readYODA = {"readYODA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_39readYODA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_38readYODA};
static PyObject *__pyx_pw_4yoda_4core_39readYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_asdict = 0;
  PyObject *__pyx_v_patterns = 0;
  PyObject *__pyx_v_unpatterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readYODA (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_True));
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 173, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asdict);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 173, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_patterns);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 173, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unpatterns);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 173, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "readYODA") < 0)) __PYX_ERR(6, 173, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file_or_filename = values[0];
    __pyx_v_asdict = values[1];
    __pyx_v_patterns = values[2];
    __pyx_v_unpatterns = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("readYODA", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 173, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.readYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_38readYODA(__pyx_self, __pyx_v_file_or_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_38readYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  std::istringstream __pyx_v_iss;
  std::vector<YODA::AnalysisObject *>  __pyx_v_aobjects;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("readYODA", 0);

  /* "include/IO.pyx":187
 *     cdef c.istringstream iss
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)             # <<<<<<<<<<<<<<
 *     iss.str(s)
 *     c.ReaderYODA_create().read(iss, aobjects)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 187, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":188
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)             # <<<<<<<<<<<<<<
 *     c.ReaderYODA_create().read(iss, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 */
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 188, __pyx_L1_error)
  (void)(__pyx_v_iss.str(__pyx_t_5));

  /* "include/IO.pyx":189
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)
 *     c.ReaderYODA_create().read(iss, aobjects)             # <<<<<<<<<<<<<<
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)
 */
  try {
    YODA::ReaderYODA::create().read(__pyx_v_iss, __pyx_v_aobjects);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 189, __pyx_L1_error)
  }

  /* "include/IO.pyx":190
 *     iss.str(s)
 *     c.ReaderYODA_create().read(iss, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \             # <<<<<<<<<<<<<<
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 190, __pyx_L1_error)
  if (__pyx_t_6) {
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 190, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {

    /* "include/IO.pyx":191
 *     c.ReaderYODA_create().read(iss, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":173
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.readYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":194
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_41readFLAT(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_40readFLAT, "readFLAT(file_or_filename, asdict=True, patterns=None, unpatterns=None)\n\n    Read data objects from the provided FLAT-format file.\n\n    The loaded data objects can be filtered on their path strings, using the\n    optional patterns and unpatterns arguments. These can be strings, compiled\n    regex objects with a 'match' method, or any iterable of those types. If\n    given, only analyses with paths which match at least one pattern, and do not\n    match any unpatterns, will be returned.\n\n    Returns a dict or list of analysis objects depending on the asdict argument.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_41readFLAT = {"readFLAT", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_41readFLAT, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_40readFLAT};
static PyObject *__pyx_pw_4yoda_4core_41readFLAT(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_asdict = 0;
  PyObject *__pyx_v_patterns = 0;
  PyObject *__pyx_v_unpatterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readFLAT (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_True));
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 194, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asdict);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 194, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_patterns);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 194, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unpatterns);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 194, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "readFLAT") < 0)) __PYX_ERR(6, 194, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file_or_filename = values[0];
    __pyx_v_asdict = values[1];
    __pyx_v_patterns = values[2];
    __pyx_v_unpatterns = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("readFLAT", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 194, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.readFLAT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_40readFLAT(__pyx_self, __pyx_v_file_or_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_40readFLAT(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  std::istringstream __pyx_v_iss;
  std::vector<YODA::AnalysisObject *>  __pyx_v_aobjects;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("readFLAT", 0);

  /* "include/IO.pyx":208
 *     cdef c.istringstream iss
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)             # <<<<<<<<<<<<<<
 *     iss.str(s)
 *     c.ReaderFLAT_create().read(iss, aobjects)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":209
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)             # <<<<<<<<<<<<<<
 *     c.ReaderFLAT_create().read(iss, aobjects)
 *     #c.ReaderFLAT_create().read_from_file(filename, aobjects)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 209, __pyx_L1_error)
  (void)(__pyx_v_iss.str(__pyx_t_5));

  /* "include/IO.pyx":210
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)
 *     c.ReaderFLAT_create().read(iss, aobjects)             # <<<<<<<<<<<<<<
 *     #c.ReaderFLAT_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 */
  try {
    YODA::ReaderFLAT::create().read(__pyx_v_iss, __pyx_v_aobjects);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 210, __pyx_L1_error)
  }

  /* "include/IO.pyx":212
 *     c.ReaderFLAT_create().read(iss, aobjects)
 *     #c.ReaderFLAT_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \             # <<<<<<<<<<<<<<
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 212, __pyx_L1_error)
  if (__pyx_t_6) {
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {

    /* "include/IO.pyx":213
 *     #c.ReaderFLAT_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 213, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":194
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.readFLAT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":216
 * 
 * 
 * def readAIDA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided AIDA-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_43readAIDA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_42readAIDA, "readAIDA(file_or_filename, asdict=True, patterns=None, unpatterns=None)\n\n    Read data objects from the provided AIDA-format file.\n\n    The loaded data objects can be filtered on their path strings, using the\n    optional patterns and unpatterns arguments. These can be strings, compiled\n    regex objects with a 'match' method, or any iterable of those types. If\n    given, only analyses with paths which match at least one pattern, and do not\n    match any unpatterns, will be returned.\n\n    Returns a dict or list of analysis objects depending on the asdict argument.\n\n    DEPRECATED: AIDA is a dead format. At some point we will stop supporting it.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_43readAIDA = {"readAIDA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_43readAIDA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_42readAIDA};
static PyObject *__pyx_pw_4yoda_4core_43readAIDA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_asdict = 0;
  PyObject *__pyx_v_patterns = 0;
  PyObject *__pyx_v_unpatterns = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("readAIDA (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_file_or_filename,&__pyx_n_s_asdict,&__pyx_n_s_patterns,&__pyx_n_s_unpatterns,0};
    PyObject* values[4] = {0,0,0,0};
    values[1] = ((PyObject *)((PyObject *)Py_True));
    values[2] = ((PyObject *)((PyObject *)Py_None));
    values[3] = ((PyObject *)((PyObject *)Py_None));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 216, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_asdict);
          if (value) { values[1] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 216, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_patterns);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 216, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  3:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_unpatterns);
          if (value) { values[3] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 216, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "readAIDA") < 0)) __PYX_ERR(6, 216, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  4: values[3] = __Pyx_Arg_FASTCALL(__pyx_args, 3);
        CYTHON_FALLTHROUGH;
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_file_or_filename = values[0];
    __pyx_v_asdict = values[1];
    __pyx_v_patterns = values[2];
    __pyx_v_unpatterns = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("readAIDA", 0, 1, 4, __pyx_nargs); __PYX_ERR(6, 216, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.readAIDA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_42readAIDA(__pyx_self, __pyx_v_file_or_filename, __pyx_v_asdict, __pyx_v_patterns, __pyx_v_unpatterns);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_42readAIDA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_asdict, PyObject *__pyx_v_patterns, PyObject *__pyx_v_unpatterns) {
  std::istringstream __pyx_v_iss;
  std::vector<YODA::AnalysisObject *>  __pyx_v_aobjects;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  std::string __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("readAIDA", 0);

  /* "include/IO.pyx":232
 *     cdef c.istringstream iss
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)             # <<<<<<<<<<<<<<
 *     iss.str(s)
 *     c.ReaderAIDA_create().read(iss, aobjects)
 */
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_bytestr_from_file); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = NULL;
  __pyx_t_4 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_2))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
    if (likely(__pyx_t_3)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_2, function);
      __pyx_t_4 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+1-__pyx_t_4, 1+__pyx_t_4);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  }
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":233
 *     cdef vector[c.AnalysisObject*] aobjects
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)             # <<<<<<<<<<<<<<
 *     c.ReaderAIDA_create().read(iss, aobjects)
 *     #c.ReaderAIDA_create().read_from_file(filename, aobjects)
 */
  __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_v_s); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 233, __pyx_L1_error)
  (void)(__pyx_v_iss.str(__pyx_t_5));

  /* "include/IO.pyx":234
 *     s = _bytestr_from_file(file_or_filename)
 *     iss.str(s)
 *     c.ReaderAIDA_create().read(iss, aobjects)             # <<<<<<<<<<<<<<
 *     #c.ReaderAIDA_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 */
  try {
    YODA::ReaderAIDA::create().read(__pyx_v_iss, __pyx_v_aobjects);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 234, __pyx_L1_error)
  }

  /* "include/IO.pyx":236
 *     c.ReaderAIDA_create().read(iss, aobjects)
 *     #c.ReaderAIDA_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \             # <<<<<<<<<<<<<<
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_asdict); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(6, 236, __pyx_L1_error)
  if (__pyx_t_6) {
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_dict((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 236, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {

    /* "include/IO.pyx":237
 *     #c.ReaderAIDA_create().read_from_file(filename, aobjects)
 *     return _aobjects_to_dict(&aobjects, patterns, unpatterns) if asdict \
 *         else _aobjects_to_list(&aobjects, patterns, unpatterns)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __pyx_f_4yoda_4core__aobjects_to_list((&__pyx_v_aobjects), __pyx_v_patterns, __pyx_v_unpatterns); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 237, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":216
 * 
 * 
 * def readAIDA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided AIDA-format file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("yoda.core.readAIDA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":244
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_45write(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_44write, "write(ana_objs, filename, precision=-1)\n\n    Write data objects to the provided filename,\n    auto-determining the format from the file extension.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_45write = {"write", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_45write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_44write};
static PyObject *__pyx_pw_4yoda_4core_45write(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ana_objs = 0;
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_precision = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_filename,&__pyx_n_s_precision,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)__pyx_int_neg_1));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ana_objs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 244, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 244, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, 1); __PYX_ERR(6, 244, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_precision);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 244, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "write") < 0)) __PYX_ERR(6, 244, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ana_objs = values[0];
    __pyx_v_filename = values[1];
    __pyx_v_precision = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 244, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_44write(__pyx_self, __pyx_v_ana_objs, __pyx_v_filename, __pyx_v_precision);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_44write(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_filename, PyObject *__pyx_v_precision) {
  std::vector<YODA::AnalysisObject *>  __pyx_v_vec;
  struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_a = 0;
  PyObject *__pyx_v_aolist = NULL;
  CYTHON_UNUSED PyObject *__pyx_v_key = NULL;
  PyObject *__pyx_v_ao = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *(*__pyx_t_12)(PyObject *);
  int __pyx_t_13;
  PyObject *(*__pyx_t_14)(PyObject *);
  YODA::AnalysisObject *__pyx_t_15;
  std::string __pyx_t_16;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 0);

  /* "include/IO.pyx":252
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = [ao for key,ao in sorted(ana_objs.items())] if hasattr(ana_objs, "items") \             # <<<<<<<<<<<<<<
 *               else ana_objs if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_items); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 252, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_ana_objs, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = NULL;
    __pyx_t_8 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
      if (likely(__pyx_t_7)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_6, function);
        __pyx_t_8 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_7, };
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+1-__pyx_t_8, 0+__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 252, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    }
    __pyx_t_6 = PySequence_List(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 252, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = ((PyObject*)__pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_9 = PyList_Sort(__pyx_t_4); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(6, 252, __pyx_L1_error)
    __pyx_t_6 = __pyx_t_4; __Pyx_INCREF(__pyx_t_6); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_6)) break;
      #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
      __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_10); __Pyx_INCREF(__pyx_t_4); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(6, 252, __pyx_L1_error)
      #else
      __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 252, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      #endif
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(6, 252, __pyx_L1_error)
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_5 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(6, 252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(6, 252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_12 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_11);
        index = 0; __pyx_t_5 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_5);
        index = 1; __pyx_t_7 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(6, 252, __pyx_L1_error)
        __pyx_t_12 = NULL;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L6_unpacking_done;
        __pyx_L5_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __pyx_t_12 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(6, 252, __pyx_L1_error)
        __pyx_L6_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_5);
      __pyx_t_5 = 0;
      __Pyx_XDECREF_SET(__pyx_v_ao, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(__Pyx_ListComp_Append(__pyx_t_3, (PyObject*)__pyx_v_ao))) __PYX_ERR(6, 252, __pyx_L1_error)
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {

    /* "include/IO.pyx":253
 *     cdef AnalysisObject a
 *     aolist = [ao for key,ao in sorted(ana_objs.items())] if hasattr(ana_objs, "items") \
 *               else ana_objs if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
    __pyx_t_13 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_iter); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(6, 253, __pyx_L1_error)
    if (__pyx_t_13) {
      __Pyx_INCREF(__pyx_v_ana_objs);
      __pyx_t_3 = __pyx_v_ana_objs;
    } else {
      __pyx_t_6 = PyList_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 253, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      PyList_SET_ITEM(__pyx_t_6, 0, __pyx_v_ana_objs);
      __pyx_t_3 = __pyx_t_6;
      __pyx_t_6 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":254
 *     aolist = [ao for key,ao in sorted(ana_objs.items())] if hasattr(ana_objs, "items") \
 *               else ana_objs if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     c.IO_write_to_file(filename, vec, precision)
 */
  if (likely(PyList_CheckExact(__pyx_v_aolist)) || PyTuple_CheckExact(__pyx_v_aolist)) {
    __pyx_t_1 = __pyx_v_aolist; __Pyx_INCREF(__pyx_t_1); __pyx_t_10 = 0;
    __pyx_t_14 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_aolist); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 254, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_14 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_14)) __PYX_ERR(6, 254, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_14)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(6, 254, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_10); __Pyx_INCREF(__pyx_t_3); __pyx_t_10++; if (unlikely((0 < 0))) __PYX_ERR(6, 254, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 254, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_14(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 254, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(6, 254, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "include/IO.pyx":255
 *               else ana_objs if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     c.IO_write_to_file(filename, vec, precision)
 *     #_str_to_file(oss.str(), filename)
 */
    __pyx_t_15 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_15 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(6, 255, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_15);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(6, 255, __pyx_L1_error)
    }

    /* "include/IO.pyx":254
 *     aolist = [ao for key,ao in sorted(ana_objs.items())] if hasattr(ana_objs, "items") \
 *               else ana_objs if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     c.IO_write_to_file(filename, vec, precision)
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/IO.pyx":256
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     c.IO_write_to_file(filename, vec, precision)             # <<<<<<<<<<<<<<
 *     #_str_to_file(oss.str(), filename)
 * 
 */
  __pyx_t_16 = __pyx_convert_string_from_py_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 256, __pyx_L1_error)
  __pyx_t_8 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_8 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 256, __pyx_L1_error)
  try {
    YODA::write(__pyx_t_16, __pyx_v_vec, __pyx_t_8);
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 256, __pyx_L1_error)
  }

  /* "include/IO.pyx":244
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("yoda.core.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_aolist);
  __Pyx_XDECREF(__pyx_v_key);
  __Pyx_XDECREF(__pyx_v_ao);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":260
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_47writeYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_46writeYODA, "writeYODA(ana_objs, file_or_filename, precision=-1)\n\n    Write data objects to the provided file in YODA format.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_47writeYODA = {"writeYODA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_47writeYODA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_46writeYODA};
static PyObject *__pyx_pw_4yoda_4core_47writeYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ana_objs = 0;
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_precision = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeYODA (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)__pyx_int_neg_1));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ana_objs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 260, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 260, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeYODA", 0, 2, 3, 1); __PYX_ERR(6, 260, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_precision);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 260, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "writeYODA") < 0)) __PYX_ERR(6, 260, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ana_objs = values[0];
    __pyx_v_file_or_filename = values[1];
    __pyx_v_precision = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeYODA", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 260, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.writeYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_46writeYODA(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_46writeYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision) {
  std::ostringstream __pyx_v_oss;
  YODA::Writer *__pyx_v_w;
  std::vector<YODA::AnalysisObject *>  __pyx_v_vec;
  struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_a = 0;
  PyObject *__pyx_v_aolist = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeYODA", 0);

  /* "include/IO.pyx":268
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 268, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 268, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {

    /* "include/IO.pyx":269
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
    __pyx_t_7 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_iter); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(6, 269, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":268
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
      __Pyx_INCREF(__pyx_v_ana_objs);
      __pyx_t_3 = __pyx_v_ana_objs;
    } else {

      /* "include/IO.pyx":269
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 269, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_ana_objs);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":270
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()
 */
  if (likely(PyList_CheckExact(__pyx_v_aolist)) || PyTuple_CheckExact(__pyx_v_aolist)) {
    __pyx_t_1 = __pyx_v_aolist; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_aolist); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 270, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 270, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 270, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 270, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 270, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_9(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 270, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(6, 270, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "include/IO.pyx":271
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterYODA_create()
 *     w.setPrecision(precision)
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(6, 271, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(6, 271, __pyx_L1_error)
    }

    /* "include/IO.pyx":270
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/IO.pyx":272
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()             # <<<<<<<<<<<<<<
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_v_w = (&YODA::WriterYODA::create());

  /* "include/IO.pyx":273
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterYODA_create()
 *     w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 273, __pyx_L1_error)
  __pyx_v_w->setPrecision(__pyx_t_6);

  /* "include/IO.pyx":274
 *     w = & c.WriterYODA_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_istxt); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 274, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 274, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":275
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 275, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_11, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 275, __pyx_L1_error)
    }

    /* "include/IO.pyx":274
 *     w = & c.WriterYODA_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L6;
  }

  /* "include/IO.pyx":277
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 *         w.write(oss, vec)             # <<<<<<<<<<<<<<
 *         _str_to_file(oss.str(), file_or_filename)
 * 
 */
  /*else*/ {
    try {
      __pyx_v_w->write(__pyx_v_oss, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 277, __pyx_L1_error)
    }

    /* "include/IO.pyx":278
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_v_file_or_filename};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 278, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "include/IO.pyx":260
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.writeYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_aolist);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":281
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_49writeFLAT(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_48writeFLAT, "writeFLAT(ana_objs, file_or_filename, precision=-1)\n\n    Write data objects to the provided file in FLAT format.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_49writeFLAT = {"writeFLAT", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_49writeFLAT, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_48writeFLAT};
static PyObject *__pyx_pw_4yoda_4core_49writeFLAT(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ana_objs = 0;
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_precision = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeFLAT (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)__pyx_int_neg_1));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ana_objs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 281, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 281, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeFLAT", 0, 2, 3, 1); __PYX_ERR(6, 281, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_precision);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 281, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "writeFLAT") < 0)) __PYX_ERR(6, 281, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ana_objs = values[0];
    __pyx_v_file_or_filename = values[1];
    __pyx_v_precision = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeFLAT", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 281, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.writeFLAT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_48writeFLAT(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_48writeFLAT(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision) {
  std::ostringstream __pyx_v_oss;
  YODA::Writer *__pyx_v_w;
  std::vector<YODA::AnalysisObject *>  __pyx_v_vec;
  struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_a = 0;
  PyObject *__pyx_v_aolist = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeFLAT", 0);

  /* "include/IO.pyx":289
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 289, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 289, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {

    /* "include/IO.pyx":290
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
    __pyx_t_7 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_iter); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(6, 290, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":289
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
      __Pyx_INCREF(__pyx_v_ana_objs);
      __pyx_t_3 = __pyx_v_ana_objs;
    } else {

      /* "include/IO.pyx":290
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 290, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_ana_objs);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":291
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()
 */
  if (likely(PyList_CheckExact(__pyx_v_aolist)) || PyTuple_CheckExact(__pyx_v_aolist)) {
    __pyx_t_1 = __pyx_v_aolist; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_aolist); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 291, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 291, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 291, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_9(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 291, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(6, 291, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "include/IO.pyx":292
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterFLAT_create()
 *     w.setPrecision(precision)
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(6, 292, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(6, 292, __pyx_L1_error)
    }

    /* "include/IO.pyx":291
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/IO.pyx":293
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()             # <<<<<<<<<<<<<<
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_v_w = (&YODA::WriterFLAT::create());

  /* "include/IO.pyx":294
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterFLAT_create()
 *     w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 294, __pyx_L1_error)
  __pyx_v_w->setPrecision(__pyx_t_6);

  /* "include/IO.pyx":295
 *     w = & c.WriterFLAT_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_istxt); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":296
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 296, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_11, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 296, __pyx_L1_error)
    }

    /* "include/IO.pyx":295
 *     w = & c.WriterFLAT_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L6;
  }

  /* "include/IO.pyx":298
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 *         w.write(oss, vec)             # <<<<<<<<<<<<<<
 *         _str_to_file(oss.str(), file_or_filename)
 * 
 */
  /*else*/ {
    try {
      __pyx_v_w->write(__pyx_v_oss, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 298, __pyx_L1_error)
    }

    /* "include/IO.pyx":299
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_v_file_or_filename};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "include/IO.pyx":281
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.writeFLAT", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_aolist);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":303
 * 
 * # TODO: remove
 * def writeAIDA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in AIDA format.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_51writeAIDA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_50writeAIDA, "writeAIDA(ana_objs, file_or_filename, precision=-1)\n\n    Write data objects to the provided file in AIDA format.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_51writeAIDA = {"writeAIDA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_51writeAIDA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_50writeAIDA};
static PyObject *__pyx_pw_4yoda_4core_51writeAIDA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_ana_objs = 0;
  PyObject *__pyx_v_file_or_filename = 0;
  PyObject *__pyx_v_precision = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("writeAIDA (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ana_objs,&__pyx_n_s_file_or_filename,&__pyx_n_s_precision,0};
    PyObject* values[3] = {0,0,0};
    values[2] = ((PyObject *)((PyObject *)__pyx_int_neg_1));
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_ana_objs)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 303, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_file_or_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 303, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("writeAIDA", 0, 2, 3, 1); __PYX_ERR(6, 303, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (kw_args > 0) {
          PyObject* value = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_precision);
          if (value) { values[2] = value; kw_args--; }
          else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 303, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "writeAIDA") < 0)) __PYX_ERR(6, 303, __pyx_L3_error)
      }
    } else {
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ana_objs = values[0];
    __pyx_v_file_or_filename = values[1];
    __pyx_v_precision = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("writeAIDA", 0, 2, 3, __pyx_nargs); __PYX_ERR(6, 303, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.writeAIDA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_50writeAIDA(__pyx_self, __pyx_v_ana_objs, __pyx_v_file_or_filename, __pyx_v_precision);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_50writeAIDA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_ana_objs, PyObject *__pyx_v_file_or_filename, PyObject *__pyx_v_precision) {
  std::ostringstream __pyx_v_oss;
  YODA::Writer *__pyx_v_w;
  std::vector<YODA::AnalysisObject *>  __pyx_v_vec;
  struct __pyx_obj_4yoda_4core_AnalysisObject *__pyx_v_a = 0;
  PyObject *__pyx_v_aolist = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  Py_ssize_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  YODA::AnalysisObject *__pyx_t_10;
  std::string __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("writeAIDA", 0);

  /* "include/IO.pyx":311
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
  __pyx_t_2 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(6, 311, __pyx_L1_error)
  if (__pyx_t_2) {
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_ana_objs, __pyx_n_s_values); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 311, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_4, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[1] = {__pyx_t_5, };
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+1-__pyx_t_6, 0+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  } else {

    /* "include/IO.pyx":312
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
    __pyx_t_7 = __Pyx_HasAttr(__pyx_v_ana_objs, __pyx_n_s_iter); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(6, 312, __pyx_L1_error)
    if (__pyx_t_7) {

      /* "include/IO.pyx":311
 *     cdef vector[c.AnalysisObject*] vec
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \             # <<<<<<<<<<<<<<
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 */
      __Pyx_INCREF(__pyx_v_ana_objs);
      __pyx_t_3 = __pyx_v_ana_objs;
    } else {

      /* "include/IO.pyx":312
 *     cdef AnalysisObject a
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]             # <<<<<<<<<<<<<<
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 */
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 312, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_ana_objs);
      __Pyx_GIVEREF(__pyx_v_ana_objs);
      PyList_SET_ITEM(__pyx_t_4, 0, __pyx_v_ana_objs);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    }
    __pyx_t_1 = __pyx_t_3;
    __pyx_t_3 = 0;
  }
  __pyx_v_aolist = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "include/IO.pyx":313
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterAIDA_create()
 */
  if (likely(PyList_CheckExact(__pyx_v_aolist)) || PyTuple_CheckExact(__pyx_v_aolist)) {
    __pyx_t_1 = __pyx_v_aolist; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_aolist); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 313, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(6, 313, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 313, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      } else {
        if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_3); __pyx_t_8++; if (unlikely((0 < 0))) __PYX_ERR(6, 313, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
      }
    } else {
      __pyx_t_3 = __pyx_t_9(__pyx_t_1);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else __PYX_ERR(6, 313, __pyx_L1_error)
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4yoda_4core_AnalysisObject))))) __PYX_ERR(6, 313, __pyx_L1_error)
    __Pyx_XDECREF_SET(__pyx_v_a, ((struct __pyx_obj_4yoda_4core_AnalysisObject *)__pyx_t_3));
    __pyx_t_3 = 0;

    /* "include/IO.pyx":314
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:
 *         vec.push_back(a.aoptr())             # <<<<<<<<<<<<<<
 *     w = & c.WriterAIDA_create()
 *     w.setPrecision(precision)
 */
    __pyx_t_10 = __pyx_f_4yoda_4core_14AnalysisObject_aoptr(__pyx_v_a); if (unlikely(__pyx_t_10 == ((YODA::AnalysisObject *)NULL))) __PYX_ERR(6, 314, __pyx_L1_error)
    try {
      __pyx_v_vec.push_back(__pyx_t_10);
    } catch(...) {
      __Pyx_CppExn2PyErr();
      __PYX_ERR(6, 314, __pyx_L1_error)
    }

    /* "include/IO.pyx":313
 *     aolist = ana_objs.values() if hasattr(ana_objs, "values") else ana_objs \
 *              if hasattr(ana_objs, "__iter__") else [ana_objs]
 *     for a in aolist:             # <<<<<<<<<<<<<<
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterAIDA_create()
 */
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "include/IO.pyx":315
 *     for a in aolist:
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterAIDA_create()             # <<<<<<<<<<<<<<
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 */
  __pyx_v_w = (&YODA::WriterAIDA::create());

  /* "include/IO.pyx":316
 *         vec.push_back(a.aoptr())
 *     w = & c.WriterAIDA_create()
 *     w.setPrecision(precision)             # <<<<<<<<<<<<<<
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)
 */
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_precision); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(6, 316, __pyx_L1_error)
  __pyx_v_w->setPrecision(__pyx_t_6);

  /* "include/IO.pyx":317
 *     w = & c.WriterAIDA_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_istxt); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = NULL;
  __pyx_t_6 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_4)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_6 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_file_or_filename};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 1+__pyx_t_6);
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 317, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(6, 317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "include/IO.pyx":318
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):
 *         w.write_to_file(file_or_filename, vec)             # <<<<<<<<<<<<<<
 *     else:
 *         w.write(oss, vec)
 */
    __pyx_t_11 = __pyx_convert_string_from_py_std__in_string(__pyx_v_file_or_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 318, __pyx_L1_error)
    try {
      __pyx_v_w->YODA::Writer::write(__pyx_t_11, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 318, __pyx_L1_error)
    }

    /* "include/IO.pyx":317
 *     w = & c.WriterAIDA_create()
 *     w.setPrecision(precision)
 *     if _istxt(file_or_filename):             # <<<<<<<<<<<<<<
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 */
    goto __pyx_L6;
  }

  /* "include/IO.pyx":320
 *         w.write_to_file(file_or_filename, vec)
 *     else:
 *         w.write(oss, vec)             # <<<<<<<<<<<<<<
 *         _str_to_file(oss.str(), file_or_filename)
 * 
 */
  /*else*/ {
    try {
      __pyx_v_w->write(__pyx_v_oss, __pyx_v_vec);
    } catch(...) {
      translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
      __PYX_ERR(6, 320, __pyx_L1_error)
    }

    /* "include/IO.pyx":321
 *     else:
 *         w.write(oss, vec)
 *         _str_to_file(oss.str(), file_or_filename)             # <<<<<<<<<<<<<<
 * 
 * ##
 */
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_str_to_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_oss.str()); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 321, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = NULL;
    __pyx_t_6 = 0;
    if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
      if (likely(__pyx_t_5)) {
        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(function);
        __Pyx_DECREF_SET(__pyx_t_3, function);
        __pyx_t_6 = 1;
      }
    }
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_v_file_or_filename};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_6, 2+__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  }
  __pyx_L6:;

  /* "include/IO.pyx":303
 * 
 * # TODO: remove
 * def writeAIDA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in AIDA format.
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("yoda.core.writeAIDA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_aolist);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":331
 *     Index of a file.
 *     """
 *     def __init__(self, index_map, repr_string):             # <<<<<<<<<<<<<<
 *         self.index_map = index_map
 *         self.repr_string = repr_string
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Index_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Index___init__, "Index.__init__(self, index_map, repr_string)");
static PyMethodDef __pyx_mdef_4yoda_4core_5Index_1__init__ = {"__init__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Index_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Index___init__};
static PyObject *__pyx_pw_4yoda_4core_5Index_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_index_map = 0;
  PyObject *__pyx_v_repr_string = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_index_map,&__pyx_n_s_repr_string,0};
    PyObject* values[3] = {0,0,0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  3: values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
        CYTHON_FALLTHROUGH;
        case  2: values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
        CYTHON_FALLTHROUGH;
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 331, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
        CYTHON_FALLTHROUGH;
        case  1:
        if (likely((values[1] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_index_map)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 331, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(6, 331, __pyx_L3_error)
        }
        CYTHON_FALLTHROUGH;
        case  2:
        if (likely((values[2] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_repr_string)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 331, __pyx_L3_error)
        else {
          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(6, 331, __pyx_L3_error)
        }
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__init__") < 0)) __PYX_ERR(6, 331, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
      values[1] = __Pyx_Arg_FASTCALL(__pyx_args, 1);
      values[2] = __Pyx_Arg_FASTCALL(__pyx_args, 2);
    }
    __pyx_v_self = values[0];
    __pyx_v_index_map = values[1];
    __pyx_v_repr_string = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(6, 331, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Index.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Index___init__(__pyx_self, __pyx_v_self, __pyx_v_index_map, __pyx_v_repr_string);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Index___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_index_map, PyObject *__pyx_v_repr_string) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "include/IO.pyx":332
 *     """
 *     def __init__(self, index_map, repr_string):
 *         self.index_map = index_map             # <<<<<<<<<<<<<<
 *         self.repr_string = repr_string
 * 
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_index_map, __pyx_v_index_map) < 0) __PYX_ERR(6, 332, __pyx_L1_error)

  /* "include/IO.pyx":333
 *     def __init__(self, index_map, repr_string):
 *         self.index_map = index_map
 *         self.repr_string = repr_string             # <<<<<<<<<<<<<<
 * 
 *     def toDict(self):
 */
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_repr_string, __pyx_v_repr_string) < 0) __PYX_ERR(6, 333, __pyx_L1_error)

  /* "include/IO.pyx":331
 *     Index of a file.
 *     """
 *     def __init__(self, index_map, repr_string):             # <<<<<<<<<<<<<<
 *         self.index_map = index_map
 *         self.repr_string = repr_string
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("yoda.core.Index.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":335
 *         self.repr_string = repr_string
 * 
 *     def toDict(self):             # <<<<<<<<<<<<<<
 *         """\
 *         Get a dictionary containing the index structure
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Index_3toDict(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Index_2toDict, "Index.toDict(self)\n        Get a dictionary containing the index structure\n\n        Returns:\n            dict of str: dict of str: int : dictionary which holds\n                analysis object types (str) as keys and\n                dictionaries as values which in turn hold\n                paths (str) as keys and bin counts (int) as values.\n\n        Example:\n            { \"Histo1D\": {\"/ANA1/d21-x01-y01\": 5, \"/ANA2/d33-x01-y01\": 16},\n              \"Scatter2D\": {\"/ANA1/d09-x01-y01\": 3} }\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Index_3toDict = {"toDict", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Index_3toDict, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Index_2toDict};
static PyObject *__pyx_pw_4yoda_4core_5Index_3toDict(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("toDict (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 335, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "toDict") < 0)) __PYX_ERR(6, 335, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("toDict", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 335, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Index.toDict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Index_2toDict(__pyx_self, __pyx_v_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Index_2toDict(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("toDict", 0);

  /* "include/IO.pyx":349
 *               "Scatter2D": {"/ANA1/d09-x01-y01": 3} }
 *         """
 *         return self.index_map             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_index_map); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":335
 *         self.repr_string = repr_string
 * 
 *     def toDict(self):             # <<<<<<<<<<<<<<
 *         """\
 *         Get a dictionary containing the index structure
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("yoda.core.Index.toDict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":351
 *         return self.index_map
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get string representation of file index.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_5Index_5__repr__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_5Index_4__repr__, "Index.__repr__(self)\n\n        Get string representation of file index.\n\n        Returns:\n            str: formatted string.\n                Example:\n                    \"\n                    OBJECT TYPE: Scatter1D\n                        ----------\n                        PATH:      /RAW/_XSEC[WeightNormalisation]\n                        BIN COUNT: 1\n                        ----------\n                    \"\n        ");
static PyMethodDef __pyx_mdef_4yoda_4core_5Index_5__repr__ = {"__repr__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Index_5__repr__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Index_4__repr__};
static PyObject *__pyx_pw_4yoda_4core_5Index_5__repr__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_self)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 351, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "__repr__") < 0)) __PYX_ERR(6, 351, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__repr__", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 351, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.Index.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_5Index_4__repr__(__pyx_self, __pyx_v_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_5Index_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "include/IO.pyx":366
 *                     "
 *         """
 *         return self.repr_string.replace("\\n","\n")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_repr_string); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_replace); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(6, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":351
 *         return self.index_map
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get string representation of file index.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("yoda.core.Index.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":369
 * 
 * 
 * cdef dict mkIndex(c.Reader& reader, string filename):             # <<<<<<<<<<<<<<
 *     """Generate index for file.
 * 
 */

static PyObject *__pyx_f_4yoda_4core_mkIndex(CYTHON_UNUSED YODA::Reader &__pyx_v_reader, std::string __pyx_v_filename) {
  YODA::Index __pyx_v_idx;
  std::unordered_map<std::string,std::unordered_map<std::string,int> >  __pyx_v_AOidx;
  PyObject *__pyx_v_indexDict = NULL;
  std::string __pyx_v_indexStr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::unordered_map<std::string,std::unordered_map<std::string,int> >  __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  std::string __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkIndex", 0);

  /* "include/IO.pyx":391
 *             Value of "str" key contains string representation (str) of index map.
 *     """
 *     cdef c.Index idx = c.ReaderYODA_create().make_index(filename)             # <<<<<<<<<<<<<<
 *     cdef unordered_map[string,unordered_map[string,int]] AOidx
 * 
 */
  __pyx_v_idx = YODA::ReaderYODA::create().YODA::Reader::mkIndex(__pyx_v_filename);

  /* "include/IO.pyx":394
 *     cdef unordered_map[string,unordered_map[string,int]] AOidx
 * 
 *     AOidx = idx.getAOIndex()             # <<<<<<<<<<<<<<
 *     indexDict = _idxMap_to_dict(&AOidx)
 *     indexStr = idx.toString()
 */
  try {
    __pyx_t_1 = __pyx_v_idx.getAOIndex();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 394, __pyx_L1_error)
  }
  __pyx_v_AOidx = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1);

  /* "include/IO.pyx":395
 * 
 *     AOidx = idx.getAOIndex()
 *     indexDict = _idxMap_to_dict(&AOidx)             # <<<<<<<<<<<<<<
 *     indexStr = idx.toString()
 * 
 */
  __pyx_t_2 = __pyx_f_4yoda_4core__idxMap_to_dict((&__pyx_v_AOidx)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_indexDict = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/IO.pyx":396
 *     AOidx = idx.getAOIndex()
 *     indexDict = _idxMap_to_dict(&AOidx)
 *     indexStr = idx.toString()             # <<<<<<<<<<<<<<
 * 
 *     return {"dict" : indexDict, "str" : indexStr}
 */
  try {
    __pyx_t_3 = __pyx_v_idx.toString();
  } catch(...) {
    translate_yoda_error(); if (!PyErr_Occurred())PyErr_SetString(PyExc_RuntimeError, "Error converting c++ exception.");
    __PYX_ERR(6, 396, __pyx_L1_error)
  }
  __pyx_v_indexStr = __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_3);

  /* "include/IO.pyx":398
 *     indexStr = idx.toString()
 * 
 *     return {"dict" : indexDict, "str" : indexStr}             # <<<<<<<<<<<<<<
 * 
 * def mkIndexYODA(filename):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dict, __pyx_v_indexDict) < 0) __PYX_ERR(6, 398, __pyx_L1_error)
  __pyx_t_4 = __pyx_convert_PyStr_string_to_py_std__in_string(__pyx_v_indexStr); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_str, __pyx_t_4) < 0) __PYX_ERR(6, 398, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_r = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":369
 * 
 * 
 * cdef dict mkIndex(c.Reader& reader, string filename):             # <<<<<<<<<<<<<<
 *     """Generate index for file.
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("yoda.core.mkIndex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_indexDict);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "include/IO.pyx":400
 *     return {"dict" : indexDict, "str" : indexStr}
 * 
 * def mkIndexYODA(filename):             # <<<<<<<<<<<<<<
 *     """
 *     Generate Index object for the provided YODA-format file.
 */

/* Python wrapper */
static PyObject *__pyx_pw_4yoda_4core_53mkIndexYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_4yoda_4core_52mkIndexYODA, "mkIndexYODA(filename)\n\n    Generate Index object for the provided YODA-format file.\n    ");
static PyMethodDef __pyx_mdef_4yoda_4core_53mkIndexYODA = {"mkIndexYODA", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_53mkIndexYODA, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_52mkIndexYODA};
static PyObject *__pyx_pw_4yoda_4core_53mkIndexYODA(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_filename = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED const Py_ssize_t __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mkIndexYODA (wrapper)", 0);
  {
    PyObject **__pyx_pyargnames[] = {&__pyx_n_s_filename,0};
    PyObject* values[1] = {0};
    if (__pyx_kwds) {
      Py_ssize_t kw_args;
      switch (__pyx_nargs) {
        case  1: values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = __Pyx_NumKwargs_FASTCALL(__pyx_kwds);
      switch (__pyx_nargs) {
        case  0:
        if (likely((values[0] = __Pyx_GetKwValue_FASTCALL(__pyx_kwds, __pyx_kwvalues, __pyx_n_s_filename)) != 0)) kw_args--;
        else if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 400, __pyx_L3_error)
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        const Py_ssize_t kwd_pos_args = __pyx_nargs;
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values + 0, kwd_pos_args, "mkIndexYODA") < 0)) __PYX_ERR(6, 400, __pyx_L3_error)
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_Arg_FASTCALL(__pyx_args, 0);
    }
    __pyx_v_filename = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mkIndexYODA", 1, 1, 1, __pyx_nargs); __PYX_ERR(6, 400, __pyx_L3_error)
  __pyx_L3_error:;
  __Pyx_AddTraceback("yoda.core.mkIndexYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_4yoda_4core_52mkIndexYODA(__pyx_self, __pyx_v_filename);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_4yoda_4core_52mkIndexYODA(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_filename) {
  PyObject *__pyx_v_idx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  std::string __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mkIndexYODA", 0);

  /* "include/IO.pyx":404
 *     Generate Index object for the provided YODA-format file.
 *     """
 *     idx = mkIndex(c.ReaderYODA_create(), filename)             # <<<<<<<<<<<<<<
 *     return Index(idx["dict"], str(idx["str"]))
 */
  __pyx_t_1 = __pyx_convert_string_from_py_std__in_string(__pyx_v_filename); if (unlikely(PyErr_Occurred())) __PYX_ERR(6, 404, __pyx_L1_error)
  __pyx_t_2 = __pyx_f_4yoda_4core_mkIndex(YODA::ReaderYODA::create(), __PYX_STD_MOVE_IF_SUPPORTED(__pyx_t_1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 404, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_idx = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/IO.pyx":405
 *     """
 *     idx = mkIndex(c.ReaderYODA_create(), filename)
 *     return Index(idx["dict"], str(idx["str"]))             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Index); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (unlikely(__pyx_v_idx == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(6, 405, __pyx_L1_error)
  }
  __pyx_t_4 = __Pyx_PyDict_GetItem(__pyx_v_idx, __pyx_n_s_dict); if (unlikely(!__pyx_t_4)) __PYX_ERR(6, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (unlikely(__pyx_v_idx == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
    __PYX_ERR(6, 405, __pyx_L1_error)
  }
  __pyx_t_5 = __Pyx_PyDict_GetItem(__pyx_v_idx, __pyx_n_s_str); if (unlikely(!__pyx_t_5)) __PYX_ERR(6, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_Str(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(6, 405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = NULL;
  __pyx_t_7 = 0;
  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    if (likely(__pyx_t_5)) {
      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_INCREF(function);
      __Pyx_DECREF_SET(__pyx_t_3, function);
      __pyx_t_7 = 1;
    }
  }
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_5, __pyx_t_4, __pyx_t_6};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+1-__pyx_t_7, 2+__pyx_t_7);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 405, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "include/IO.pyx":400
 *     return {"dict" : indexDict, "str" : indexStr}
 * 
 * def mkIndexYODA(filename):             # <<<<<<<<<<<<<<
 *     """
 *     Generate Index object for the provided YODA-format file.
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("yoda.core.mkIndexYODA", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_idx);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static struct __pyx_vtabstruct_4yoda_4core_Dbn0D __pyx_vtable_4yoda_4core_Dbn0D;

static PyObject *__pyx_tp_new_4yoda_4core_Dbn0D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Dbn0D *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Dbn0D *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Dbn0D;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Dbn0D(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Dbn0D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_5Dbn0D_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Dbn0D);
}

static int __pyx_tp_traverse_4yoda_4core_Dbn0D(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Dbn0D)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Dbn0D(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Dbn0D);
  return 0;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Dbn0D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Dbn0D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn0D_27__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn0D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Dbn0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn0D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Dbn0D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Dbn0D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn0D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn0D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn0D_29__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn0D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn0D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Dbn0D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn0D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn0D_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn0D_5__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn0D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn0D_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_6copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_8reset},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_10fill},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_12scaleW},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_15numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_14numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_17effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_16effNumEntries},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_19errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_18errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_21relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_20relErrW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_23sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_22sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_25sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_24sumW2},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_30__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn0D_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn0D_32__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn0D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Dbn0D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn0D_5__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Dbn0D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Dbn0D},
  {Py_tp_doc, (void *)PyDoc_STR("Dbn0D()\n\n    A zero-dimensional 'counter', used and exposed by Counter.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Dbn0D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Dbn0D},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Dbn0D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_5Dbn0D_3__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Dbn0D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Dbn0D_spec = {
  "yoda.core.Dbn0D",
  sizeof(struct __pyx_obj_4yoda_4core_Dbn0D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Dbn0D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Dbn0D = {
  __pyx_nb_add_4yoda_4core_Dbn0D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Dbn0D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Dbn0D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Dbn0D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Dbn0D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Dbn0D, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn0D_5__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Dbn0D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Dbn0D()\n\n    A zero-dimensional 'counter', used and exposed by Counter.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Dbn0D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Dbn0D, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Dbn0D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn0D_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Dbn0D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Dbn1D __pyx_vtable_4yoda_4core_Dbn1D;

static PyObject *__pyx_tp_new_4yoda_4core_Dbn1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Dbn1D *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Dbn1D *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Dbn1D;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Dbn1D(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Dbn1D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_5Dbn1D_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Dbn1D);
}

static int __pyx_tp_traverse_4yoda_4core_Dbn1D(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Dbn1D)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Dbn1D(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Dbn1D);
  return 0;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Dbn1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Dbn1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn1D_43__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Dbn1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Dbn1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Dbn1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn1D_45__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Dbn1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn1D_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn1D_5__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn1D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn1D_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_6copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_8reset},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_10fill},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_12scaleW},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_14scaleX},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_17xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_16xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_18xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_20xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_22xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_24xRMS},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_27numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_26numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_29effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_28effNumEntries},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_31errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_30errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_33relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_32relErrW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_35sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_34sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_37sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_36sumW2},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_39sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_38sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_41sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_40sumWX2},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_47__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_46__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn1D_49__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn1D_48__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn1D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Dbn1D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn1D_5__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Dbn1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Dbn1D},
  {Py_tp_doc, (void *)PyDoc_STR("Dbn1D()\n\n    A 1D distribution 'counter', used and exposed by 1D histograms and their bins.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Dbn1D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Dbn1D},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Dbn1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_5Dbn1D_3__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Dbn1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Dbn1D_spec = {
  "yoda.core.Dbn1D",
  sizeof(struct __pyx_obj_4yoda_4core_Dbn1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Dbn1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Dbn1D = {
  __pyx_nb_add_4yoda_4core_Dbn1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Dbn1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Dbn1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Dbn1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Dbn1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Dbn1D, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn1D_5__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Dbn1D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Dbn1D()\n\n    A 1D distribution 'counter', used and exposed by 1D histograms and their bins.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Dbn1D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Dbn1D, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Dbn1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn1D_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Dbn1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Dbn2D __pyx_vtable_4yoda_4core_Dbn2D;

static PyObject *__pyx_tp_new_4yoda_4core_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Dbn2D *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Dbn2D *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Dbn2D;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Dbn2D(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Dbn2D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_5Dbn2D_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Dbn2D);
}

static int __pyx_tp_traverse_4yoda_4core_Dbn2D(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Dbn2D)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Dbn2D(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Dbn2D);
  return 0;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn2D_53__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn2D_55__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn2D_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn2D_5__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn2D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn2D_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_6copy},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_9reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_8reset},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_11fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_10fill},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_12scaleW},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_14scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_17scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_16scaleY},
  {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_19scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_18scaleXY},
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_21mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_20mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_23variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_22variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_25stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_24stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_27stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_26stdErr},
  {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_29rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_28rms},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_31numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_30numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_33effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_32effNumEntries},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_35errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_34errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_37relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_36relErrW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_39sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_38sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_41sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_40sumW2},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_43sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_42sumWX},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_45sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_44sumWY},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_47sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_46sumWX2},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_49sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_48sumWY2},
  {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_51sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_50sumWXY},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_57__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_56__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn2D_59__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn2D_58__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn2D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Dbn2D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn2D_5__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Dbn2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Dbn2D},
  {Py_tp_doc, (void *)PyDoc_STR("Dbn2D()\n\n    A 2D distribution 'counter', used and exposed by 2D histograms and\n    1D profiles and their bins.\n\n    TODO: also provide normal scalar access to quantities like xRMS\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Dbn2D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Dbn2D},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Dbn2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_5Dbn2D_3__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Dbn2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Dbn2D_spec = {
  "yoda.core.Dbn2D",
  sizeof(struct __pyx_obj_4yoda_4core_Dbn2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Dbn2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Dbn2D = {
  __pyx_nb_add_4yoda_4core_Dbn2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Dbn2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Dbn2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Dbn2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Dbn2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Dbn2D, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn2D_5__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Dbn2D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Dbn2D()\n\n    A 2D distribution 'counter', used and exposed by 2D histograms and\n    1D profiles and their bins.\n\n    TODO: also provide normal scalar access to quantities like xRMS\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Dbn2D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Dbn2D, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Dbn2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn2D_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Dbn2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Dbn3D __pyx_vtable_4yoda_4core_Dbn3D;

static PyObject *__pyx_tp_new_4yoda_4core_Dbn3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Dbn3D *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Dbn3D *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Dbn3D;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Dbn3D(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Dbn3D) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_5Dbn3D_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Dbn3D);
}

static int __pyx_tp_traverse_4yoda_4core_Dbn3D(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Dbn3D)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Dbn3D(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Dbn3D);
  return 0;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Dbn3D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Dbn3D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn3D_63__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Dbn3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn3D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Dbn3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Dbn3D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Dbn3D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Dbn3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_5Dbn3D_65__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Dbn3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Dbn3D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Dbn3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Dbn3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn3D_5__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_5Dbn3D_5__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Dbn3D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_5Dbn3D_5__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_7copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_6copy},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_9fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_8fill},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_10reset},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_13scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_12scaleW},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_15scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_14scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_17scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_16scaleY},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_19scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_18scaleZ},
  {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_21scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_20scaleXYZ},
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_23mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_22mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_25variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_24variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_27stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_26stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_29stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_28stdErr},
  {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_31rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_30rms},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_33numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_32numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_35effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_34effNumEntries},
  {"errW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_37errW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_36errW},
  {"relErrW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_39relErrW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_38relErrW},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_41sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_40sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_43sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_42sumW2},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_45sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_44sumWX},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_47sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_46sumWY},
  {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_49sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_48sumWZ},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_51sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_50sumWX2},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_53sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_52sumWY2},
  {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_55sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_54sumWZ2},
  {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_57sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_56sumWXY},
  {"sumWXZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_59sumWXZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_58sumWXZ},
  {"sumWYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_61sumWYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_60sumWYZ},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_67__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_66__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Dbn3D_69__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Dbn3D_68__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Dbn3D_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Dbn3D},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_5Dbn3D_5__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Dbn3D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Dbn3D},
  {Py_tp_doc, (void *)PyDoc_STR("Dbn3D()\n\n    A 3D distribution 'counter', used and exposed by 2D profiles and their bins.\n\n    TODO: also provide normal scalar access to quantities like xRMS\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Dbn3D},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Dbn3D},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Dbn3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_5Dbn3D_3__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Dbn3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Dbn3D_spec = {
  "yoda.core.Dbn3D",
  sizeof(struct __pyx_obj_4yoda_4core_Dbn3D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Dbn3D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Dbn3D = {
  __pyx_nb_add_4yoda_4core_Dbn3D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Dbn3D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Dbn3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Dbn3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Dbn3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Dbn3D, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn3D_5__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Dbn3D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Dbn3D()\n\n    A 3D distribution 'counter', used and exposed by 2D profiles and their bins.\n\n    TODO: also provide normal scalar access to quantities like xRMS\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Dbn3D, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Dbn3D, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Dbn3D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_5Dbn3D_3__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Dbn3D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Bin __pyx_vtable_4yoda_4core_Bin;

static PyObject *__pyx_tp_new_4yoda_4core_Bin(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Bin *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Bin *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Bin;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Bin(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Bin) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_3Bin_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Bin);
}

static int __pyx_tp_traverse_4yoda_4core_Bin(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Bin)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Bin(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Bin);
  return 0;
}

static PyMethodDef __pyx_methods_4yoda_4core_Bin[] = {
  {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_3dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_2dim},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_5numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_4numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_7effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_6effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_9sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_8sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_11sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_10sumW2},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_12__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_3Bin_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_3Bin_14__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Bin_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Bin},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Bin},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Bin},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Bin_spec = {
  "yoda.core.Bin",
  sizeof(struct __pyx_obj_4yoda_4core_Bin),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Bin_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Bin = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Bin", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Bin), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Bin, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Bin, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn1D __pyx_vtable_4yoda_4core_Bin1D_Dbn1D;

static PyObject *__pyx_tp_new_4yoda_4core_Bin1D_Dbn1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Bin1D_Dbn1D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Bin1D_Dbn1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Bin1D_Dbn1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin1D_Dbn1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_33__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin1D_Dbn1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Bin1D_Dbn1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_35__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin1D_Dbn1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Bin1D_Dbn1D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_4xEdges},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_7xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_6xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_9xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_8xMax},
  {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_11xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_10xMid},
  {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_13xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_12xWidth},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_15xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_14xMean},
  {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_17xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_16xFocus},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_18xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_20xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_22xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_24xRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_27sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_26sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_29sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_28sumWX2},
  {"merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_31merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_30merge},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_36__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn1D_38__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Bin1D_Dbn1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Bin1D_Dbn1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D},
  {Py_tp_doc, (void *)PyDoc_STR("Bin1D_Dbn1D(xlow, xhigh)\n\n    1D Bin based on an underlying Dbn1D.\n\n    ProfileBin1D(xlow, xhigh)\n\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Bin1D_Dbn1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_11Bin1D_Dbn1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Bin1D_Dbn1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Bin1D_Dbn1D_spec = {
  "yoda.core.Bin1D_Dbn1D",
  sizeof(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Bin1D_Dbn1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Bin1D_Dbn1D = {
  __pyx_nb_add_4yoda_4core_Bin1D_Dbn1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Bin1D_Dbn1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Bin1D_Dbn1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Bin1D_Dbn1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Bin1D_Dbn1D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Bin1D_Dbn1D(xlow, xhigh)\n\n    1D Bin based on an underlying Dbn1D.\n\n    ProfileBin1D(xlow, xhigh)\n\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Bin1D_Dbn1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_11Bin1D_Dbn1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Bin1D_Dbn1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Bin1D_Dbn2D __pyx_vtable_4yoda_4core_Bin1D_Dbn2D;

static PyObject *__pyx_tp_new_4yoda_4core_Bin1D_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Bin1D_Dbn2D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Bin1D_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Bin1D_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin1D_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_33__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin1D_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Bin1D_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_35__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin1D_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Bin1D_Dbn2D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_4xEdges},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_7xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_6xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_9xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_8xMax},
  {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_11xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_10xMid},
  {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_13xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_12xWidth},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_15xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_14xMean},
  {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_17xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_16xFocus},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_19xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_18xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_21xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_20xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_23xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_22xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_25xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_24xRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_27sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_26sumWX},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_29sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_28sumWX2},
  {"merge", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_31merge, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_30merge},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_36__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin1D_Dbn2D_38__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Bin1D_Dbn2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Bin1D_Dbn2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D},
  {Py_tp_doc, (void *)PyDoc_STR("Bin1D_Dbn2D(xlow, xhigh)\n\n    1D Bin based on an underlying Dbn2D.\n\n    ProfileBin1D(xlow, xhigh)\n\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Bin1D_Dbn2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_11Bin1D_Dbn2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Bin1D_Dbn2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Bin1D_Dbn2D_spec = {
  "yoda.core.Bin1D_Dbn2D",
  sizeof(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Bin1D_Dbn2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Bin1D_Dbn2D = {
  __pyx_nb_add_4yoda_4core_Bin1D_Dbn2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Bin1D_Dbn2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Bin1D_Dbn2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Bin1D_Dbn2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Bin1D_Dbn2D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Bin1D_Dbn2D(xlow, xhigh)\n\n    1D Bin based on an underlying Dbn2D.\n\n    ProfileBin1D(xlow, xhigh)\n\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Bin1D_Dbn2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_11Bin1D_Dbn2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Bin1D_Dbn2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_HistoBin1D __pyx_vtable_4yoda_4core_HistoBin1D;

static PyObject *__pyx_tp_new_4yoda_4core_HistoBin1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_HistoBin1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin1D_Dbn1D(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_HistoBin1D *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_HistoBin1D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_HistoBin1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_HistoBin1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_HistoBin1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_HistoBin1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10HistoBin1D_17__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_HistoBin1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_HistoBin1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_HistoBin1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_HistoBin1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_HistoBin1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_HistoBin1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_HistoBin1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_HistoBin1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10HistoBin1D_19__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_HistoBin1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_HistoBin1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_HistoBin1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_HistoBin1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_10HistoBin1D_21__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_10HistoBin1D_21__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_HistoBin1D[] = {
  {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_3area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_2area},
  {"height", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_5height, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_4height},
  {"areaErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_7areaErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_6areaErr},
  {"heightErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_9heightErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_8heightErr},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_11relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_10relErr},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_10HistoBin1D_21__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_22__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin1D_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin1D_24__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_HistoBin1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_10HistoBin1D_21__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_HistoBin1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_HistoBin1D},
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_10HistoBin1D_13__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_10HistoBin1D_15__isub__},
  {Py_tp_doc, (void *)PyDoc_STR("HistoBin1D(double a, double b)")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_HistoBin1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_10HistoBin1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_HistoBin1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_HistoBin1D_spec = {
  "yoda.core.HistoBin1D",
  sizeof(struct __pyx_obj_4yoda_4core_HistoBin1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_HistoBin1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_HistoBin1D = {
  __pyx_nb_add_4yoda_4core_HistoBin1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_HistoBin1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_10HistoBin1D_13__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_10HistoBin1D_15__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_HistoBin1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""HistoBin1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_HistoBin1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_10HistoBin1D_21__repr__, /*tp_repr*/
  &__pyx_tp_as_number_HistoBin1D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("HistoBin1D(double a, double b)"), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_HistoBin1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_10HistoBin1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_HistoBin1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_ProfileBin1D __pyx_vtable_4yoda_4core_ProfileBin1D;

static PyObject *__pyx_tp_new_4yoda_4core_ProfileBin1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_ProfileBin1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin1D_Dbn2D(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_ProfileBin1D *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_ProfileBin1D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_ProfileBin1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_ProfileBin1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_ProfileBin1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_ProfileBin1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_12ProfileBin1D_21__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_ProfileBin1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_ProfileBin1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_ProfileBin1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_ProfileBin1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_ProfileBin1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_ProfileBin1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_ProfileBin1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_ProfileBin1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_12ProfileBin1D_23__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_ProfileBin1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_ProfileBin1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_ProfileBin1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_ProfileBin1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_ProfileBin1D[] = {
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_3mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_2mean},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_5variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_4variance},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_7stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_6stdDev},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_9stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_8stdErr},
  {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_11rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_10rms},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_13sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_12sumWY},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_15sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_14sumWY2},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_26__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin1D_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin1D_28__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_ProfileBin1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_ProfileBin1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_ProfileBin1D},
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_12ProfileBin1D_17__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_12ProfileBin1D_19__isub__},
  {Py_tp_doc, (void *)PyDoc_STR("ProfileBin1D(double a, double b)\n\n    A 1D profile bin, as stored inside Profile1D.\n\n    Only one constructor:\n\n    * ProfileBin1D(xlow, xhigh)\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_ProfileBin1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_12ProfileBin1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_ProfileBin1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_ProfileBin1D_spec = {
  "yoda.core.ProfileBin1D",
  sizeof(struct __pyx_obj_4yoda_4core_ProfileBin1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_ProfileBin1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_ProfileBin1D = {
  __pyx_nb_add_4yoda_4core_ProfileBin1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_ProfileBin1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_12ProfileBin1D_17__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_12ProfileBin1D_19__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_ProfileBin1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""ProfileBin1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_ProfileBin1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_12ProfileBin1D_25__repr__, /*tp_repr*/
  &__pyx_tp_as_number_ProfileBin1D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("ProfileBin1D(double a, double b)\n\n    A 1D profile bin, as stored inside Profile1D.\n\n    Only one constructor:\n\n    * ProfileBin1D(xlow, xhigh)\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_ProfileBin1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_12ProfileBin1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_ProfileBin1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_AnalysisObject __pyx_vtable_4yoda_4core_AnalysisObject;

static PyObject *__pyx_tp_new_4yoda_4core_AnalysisObject(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_AnalysisObject *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_AnalysisObject *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_AnalysisObject;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_AnalysisObject(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_AnalysisObject) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_14AnalysisObject_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_AnalysisObject);
}

static int __pyx_tp_traverse_4yoda_4core_AnalysisObject(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_AnalysisObject)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_AnalysisObject(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_AnalysisObject);
  return 0;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_14AnalysisObject_33__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_14AnalysisObject_33__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_AnalysisObject[] = {
  {"type", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_3type, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_2type},
  {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_5dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_4dim},
  {"annotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_7annotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_6annotations},
  {"annotationsDict", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_9annotationsDict, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_8annotationsDict},
  {"annotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_11annotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_10annotation},
  {"setAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_13setAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_12setAnnotation},
  {"hasAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_15hasAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_14hasAnnotation},
  {"rmAnnotation", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_17rmAnnotation, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_16rmAnnotation},
  {"clearAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_19clearAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_18clearAnnotations},
  {"dump", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_21dump, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_20dump},
  {"name", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_23name, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_22name},
  {"path", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_25path, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_24path},
  {"setPath", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_27setPath, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_26setPath},
  {"title", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_29title, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_28title},
  {"setTitle", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_31setTitle, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_30setTitle},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_14AnalysisObject_33__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_35__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_34__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_14AnalysisObject_37__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_14AnalysisObject_36__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_AnalysisObject_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_AnalysisObject},
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_14AnalysisObject_33__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    AnalysisObject is the base class of the main user-facing objects, such as\n    the Histo, Profile and Scatter classes.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_AnalysisObject},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_AnalysisObject},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_AnalysisObject_spec = {
  "yoda.core.AnalysisObject",
  sizeof(struct __pyx_obj_4yoda_4core_AnalysisObject),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_AnalysisObject_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_AnalysisObject = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""AnalysisObject", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_AnalysisObject), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_14AnalysisObject_33__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    AnalysisObject is the base class of the main user-facing objects, such as\n    the Histo, Profile and Scatter classes.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_AnalysisObject, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_AnalysisObject, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Counter __pyx_vtable_4yoda_4core_Counter;

static PyObject *__pyx_tp_new_4yoda_4core_Counter(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Counter *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Counter *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Counter;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Counter_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Counter(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Counter)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Counter_35__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Counter)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Counter_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Counter, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Counter_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Counter(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Counter)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Counter_37__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Counter)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Counter_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Counter, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static CYTHON_INLINE PyObject *__pyx_nb_divide_4yoda_4core_Counter_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_divide_4yoda_4core_Counter(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Counter)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Counter_39__div__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Counter)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Counter_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Counter, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Counter_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_true_divide_4yoda_4core_Counter(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Counter)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Counter_41__truediv__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Counter)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Counter);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Counter_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Counter, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Counter_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Counter_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Counter[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Counter_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_5reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_4reset},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_6clone},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_9fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_8fill},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_11numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_10numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_13effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_12effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_15sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_14sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_17sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_16sumW2},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_19val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_18val},
  {"err", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_21err, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_20err},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_23relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_22relErr},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_25scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_24scaleW},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_27mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_26mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_29divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_28divideBy},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_43__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_42__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Counter_45__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Counter_44__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Counter_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Counter_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Counter},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Counter},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Counter},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_7Counter_31__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_7Counter_33__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Counter},
  {Py_tp_doc, (void *)PyDoc_STR("Counter(path='', title='')\n\n    Weight counter. Like a histogram without any axis (and hence only one bin).\n\n    Call fill() like with a histogram. Sums of weights can be returned, with val()\n    and err() being shorthand for the sum of weights and its binomial error.\n\n    Counter(path=\"\", title=\"\").\n      Construct a counter with optional path and title but no bins.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Counter},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Counter_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Counter},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Counter_spec = {
  "yoda.core.Counter",
  sizeof(struct __pyx_obj_4yoda_4core_Counter),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Counter_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Counter = {
  __pyx_nb_add_4yoda_4core_Counter, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Counter, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Counter, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_7Counter_31__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_7Counter_33__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  __pyx_nb_true_divide_4yoda_4core_Counter, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Counter = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Counter", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Counter), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Counter_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Counter, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Counter(path='', title='')\n\n    Weight counter. Like a histogram without any axis (and hence only one bin).\n\n    Call fill() like with a histogram. Sums of weights can be returned, with val()\n    and err() being shorthand for the sum of weights and its binomial error.\n\n    Counter(path=\"\", title=\"\").\n      Construct a counter with optional path and title but no bins.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Counter, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Counter_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Counter, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Histo1D __pyx_vtable_4yoda_4core_Histo1D;

static PyObject *__pyx_tp_new_4yoda_4core_Histo1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Histo1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Histo1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Histo1D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Histo1D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Histo1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Histo1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Histo1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo1D_103__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Histo1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Histo1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Histo1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Histo1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Histo1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo1D_105__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Histo1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Histo1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static CYTHON_INLINE PyObject *__pyx_nb_divide_4yoda_4core_Histo1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_divide_4yoda_4core_Histo1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Histo1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo1D_107__div__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Histo1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Histo1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Histo1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_true_divide_4yoda_4core_Histo1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Histo1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo1D_109__truediv__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Histo1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo1D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Histo1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Histo1D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Histo1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Histo1D[] = {
  {"_Histo1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_3_Histo1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_2__init2},
  {"_Histo1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_5_Histo1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_4__init3},
  {"_Histo1D__init5", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_7_Histo1D__init5, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_6__init5},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Histo1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_14reset},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_16clone},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_18fill},
  {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_20fillBin},
  {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_22totalDbn},
  {"underflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_25underflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_24underflow},
  {"overflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_27overflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_26overflow},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_29integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_28integral},
  {"integralRange", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_31integralRange, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_30integralRange},
  {"integralTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_33integralTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_32integralTo},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_35numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_34numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_37effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_36effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_39sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_38sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_41sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_40sumW2},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_42xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_45xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_44xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_47xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_46xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_49xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_48xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_51xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_50xRMS},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_53scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_52scaleW},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_55normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_54normalize},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_57xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_56xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_59xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_58xMax},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_61numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_60numBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_63numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_62numBinsX},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_65bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_64bins},
  {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_67bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_66bin},
  {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_69binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_68binIndexAt},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_71binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_70binAt},
  {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_73addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_72addBin},
  {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_75addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_74addBins},
  {"_Histo1D__addBins_edges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_76__addBins_edges},
  {"_Histo1D__addBins_bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_78__addBins_bins},
  {"_Histo1D__addBins_points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_81_Histo1D__addBins_points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_80__addBins_points},
  {"_Histo1D__addBins_tuples", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_82__addBins_tuples},
  {"mergeBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_85mergeBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_84mergeBins},
  {"rebinBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_87rebinBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_86rebinBy},
  {"rebinTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_89rebinTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_88rebinTo},
  {"rebin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_91rebin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_90rebin},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_93mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_92mkScatter},
  {"toIntegral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_95toIntegral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_94toIntegral},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_97divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_96divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_111_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_110_mknp},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_113xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_112xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_115xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_114xWidths},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_117xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_116xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_119xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_118xMaxs},
  {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_121xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_120xMids},
  {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_123xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_122xFoci},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_125xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_124xVals},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_127xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_126xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_129xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_128xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_131xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_130xMax},
  {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_133sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_132sumWs},
  {"heights", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_135heights, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_134heights},
  {"areas", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_137areas, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_136areas},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_139yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_138yVals},
  {"heightErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_141heightErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_140heightErrs},
  {"areaErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_143areaErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_142areaErrs},
  {"relErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_145relErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_144relErrs},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_147yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_146yErrs},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_149yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_148yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_151yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_150yMaxs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_153yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_152yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_155yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_154yMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_157__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_156__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo1D_159__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo1D_158__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Histo1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Histo1D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Histo1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Histo1D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Histo1D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_7Histo1D_99__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_7Histo1D_101__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Histo1D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_7Histo1D_9__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Histo1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_7Histo1D_9__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_7Histo1D_11__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Histo1D(*args, **kwargs)\n\n    1D histogram, with distinction between bin areas and heights.\n\n    Complete histogram binning is supported, including uniform/regular binning,\n    variable-width binning, unbinned gaps in the covered range, and\n    under/overflows. Rebinning by integer factors, or by explicit merging of\n    contiguous bins is also supported.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the result is\n    still a valid Histo1D. Binning-compatible 1D histograms may be divided,\n    resulting in a Scatter2D since further fills would not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo1D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo1D(nbins, low, high, path=\"\", title=\"\")\n      Construct a histogram with optional path and title, and nbins bins\n      uniformly distributed between low and high.\n\n    Histo1D(B, path=\"\", title=\"\").\n      Construct a histogram with optional path and title, from an\n      iterator of bins, B.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Histo1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Histo1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Histo1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Histo1D_spec = {
  "yoda.core.Histo1D",
  sizeof(struct __pyx_obj_4yoda_4core_Histo1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Histo1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Histo1D = {
  __pyx_nb_add_4yoda_4core_Histo1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Histo1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Histo1D, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_7Histo1D_99__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_7Histo1D_101__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  __pyx_nb_true_divide_4yoda_4core_Histo1D, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Histo1D = {
  __pyx_pw_4yoda_4core_7Histo1D_9__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Histo1D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Histo1D = {
  __pyx_pw_4yoda_4core_7Histo1D_9__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_7Histo1D_11__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Histo1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Histo1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Histo1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Histo1D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Histo1D, /*tp_as_number*/
  &__pyx_tp_as_sequence_Histo1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Histo1D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Histo1D(*args, **kwargs)\n\n    1D histogram, with distinction between bin areas and heights.\n\n    Complete histogram binning is supported, including uniform/regular binning,\n    variable-width binning, unbinned gaps in the covered range, and\n    under/overflows. Rebinning by integer factors, or by explicit merging of\n    contiguous bins is also supported.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the result is\n    still a valid Histo1D. Binning-compatible 1D histograms may be divided,\n    resulting in a Scatter2D since further fills would not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo1D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo1D(nbins, low, high, path=\"\", title=\"\")\n      Construct a histogram with optional path and title, and nbins bins\n      uniformly distributed between low and high.\n\n    Histo1D(B, path=\"\", title=\"\").\n      Construct a histogram with optional path and title, from an\n      iterator of bins, B.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Histo1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Histo1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Histo1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Profile1D __pyx_vtable_4yoda_4core_Profile1D;

static PyObject *__pyx_tp_new_4yoda_4core_Profile1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Profile1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Profile1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Profile1D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Profile1D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Profile1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Profile1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Profile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile1D_87__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Profile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Profile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Profile1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Profile1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Profile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile1D_89__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Profile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Profile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static CYTHON_INLINE PyObject *__pyx_nb_divide_4yoda_4core_Profile1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_divide_4yoda_4core_Profile1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Profile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile1D_91__div__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Profile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Profile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Profile1D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_true_divide_4yoda_4core_Profile1D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Profile1D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile1D_93__truediv__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Profile1D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile1D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Profile1D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile1D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_9Profile1D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Profile1D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Profile1D[] = {
  {"_Profile1D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_3_Profile1D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_2__init2},
  {"_Profile1D__init3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_5_Profile1D__init3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_4__init3},
  {"_Profile1D__init5", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_7_Profile1D__init5, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_6__init5},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Profile1D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_14reset},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_16clone},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_18fill},
  {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_20fillBin},
  {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_22totalDbn},
  {"underflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_25underflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_24underflow},
  {"overflow", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_27overflow, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_26overflow},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_29numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_28numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_31effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_30effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_33sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_32sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_35sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_34sumW2},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_37xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_36xMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_39xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_38xVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_41xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_40xStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_43xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_42xStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_45xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_44xRMS},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_47scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_46scaleW},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_49scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_48scaleY},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_51xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_50xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_53xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_52xMax},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_55numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_54numBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_57numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_56numBinsX},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_59bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_58bins},
  {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_61bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_60bin},
  {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_63binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_62binIndexAt},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_65binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_64binAt},
  {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_67addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_66addBin},
  {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_69addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_68addBins},
  {"mergeBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_71mergeBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_70mergeBins},
  {"rebinBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_73rebinBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_72rebinBy},
  {"rebinTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_75rebinTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_74rebinTo},
  {"rebin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_77rebin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_76rebin},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_79mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_78mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_81divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_80divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_95_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_94_mknp},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_97xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_96xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_99xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_98xWidths},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_101xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_100xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_103xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_102xMaxs},
  {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_105xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_104xMids},
  {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_107xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_106xFoci},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_109xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_108xVals},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_111xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_110xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_113xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_112xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_115xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_114xMax},
  {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_117sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_116sumWs},
  {"yMeans", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_119yMeans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_118yMeans},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_121yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_120yVals},
  {"yStdErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_123yStdErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_122yStdErrs},
  {"yStdDevs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_125yStdDevs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_124yStdDevs},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_127yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_126yErrs},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_129yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_128yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_131yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_130yMaxs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_133yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_132yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_135yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_134yMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_137__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_136__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile1D_139__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile1D_138__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Profile1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Profile1D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Profile1D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Profile1D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Profile1D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_9Profile1D_83__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_9Profile1D_85__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Profile1D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Profile1D_9__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Profile1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Profile1D_9__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Profile1D_11__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Profile1D(*args, **kwargs)\n\n    1D profile histogram, used to measure mean values of a y variable, binned in x.\n\n    Complete histogram binning is supported, including uniform/regular binning,\n    variable-width binning, unbinned gaps in the covered range, and\n    under/overflows. Rebinning by integer factors, or by explicit merging of\n    contiguous bins is also supported.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the result is\n    still a valid Histo1D. Binning-compatible 1D histograms may be divided,\n    resulting in a Scatter2D since further fills would not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the following\n    order.\n\n    Profile1D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Profile1D(nbins, low, high, path=\"\", title=\"\")\n      Construct a histogram with optional path and title, and nbins bins\n      uniformly distributed between low and high.\n\n    Profile1D(B, path=\"\", title=\"\").\n      Construct a histogram with optional path and title, from an\n      iterator of bins, B.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Profile1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Profile1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Profile1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Profile1D_spec = {
  "yoda.core.Profile1D",
  sizeof(struct __pyx_obj_4yoda_4core_Profile1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Profile1D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Profile1D = {
  __pyx_nb_add_4yoda_4core_Profile1D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Profile1D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Profile1D, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_9Profile1D_83__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_9Profile1D_85__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  __pyx_nb_true_divide_4yoda_4core_Profile1D, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Profile1D = {
  __pyx_pw_4yoda_4core_9Profile1D_9__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Profile1D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Profile1D = {
  __pyx_pw_4yoda_4core_9Profile1D_9__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Profile1D_11__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Profile1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Profile1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Profile1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_9Profile1D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Profile1D, /*tp_as_number*/
  &__pyx_tp_as_sequence_Profile1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Profile1D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Profile1D(*args, **kwargs)\n\n    1D profile histogram, used to measure mean values of a y variable, binned in x.\n\n    Complete histogram binning is supported, including uniform/regular binning,\n    variable-width binning, unbinned gaps in the covered range, and\n    under/overflows. Rebinning by integer factors, or by explicit merging of\n    contiguous bins is also supported.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the result is\n    still a valid Histo1D. Binning-compatible 1D histograms may be divided,\n    resulting in a Scatter2D since further fills would not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the following\n    order.\n\n    Profile1D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Profile1D(nbins, low, high, path=\"\", title=\"\")\n      Construct a histogram with optional path and title, and nbins bins\n      uniformly distributed between low and high.\n\n    Profile1D(B, path=\"\", title=\"\").\n      Construct a histogram with optional path and title, from an\n      iterator of bins, B.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Profile1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_9Profile1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Profile1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn2D __pyx_vtable_4yoda_4core_Bin2D_Dbn2D;

static PyObject *__pyx_tp_new_4yoda_4core_Bin2D_Dbn2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Bin2D_Dbn2D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Bin2D_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Bin2D_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin2D_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_85__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin2D_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Bin2D_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_87__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin2D_Dbn2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Bin2D_Dbn2D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_4xEdges},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_7yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_6yEdges},
  {"xyEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_9xyEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_8xyEdges},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_11xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_10xMin},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_13yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_12yMin},
  {"xyMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_15xyMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_14xyMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_17xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_16xMax},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_19yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_18yMax},
  {"xyMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_21xyMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_20xyMax},
  {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_23xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_22xMid},
  {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_25yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_24yMid},
  {"xyMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_27xyMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_26xyMid},
  {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_29xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_28xWidth},
  {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_31yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_30yWidth},
  {"xyWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_33xyWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_32xyWidths},
  {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_35area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_34area},
  {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_37xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_36xFocus},
  {"yFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_39yFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_38yFocus},
  {"xyFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_41xyFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_40xyFocus},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_42xMean},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_45yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_44yMean},
  {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_47xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_46xyMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_49xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_48xVariance},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_51yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_50yVariance},
  {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_53xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_52xyVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_55xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_54xStdDev},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_57yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_56yStdDev},
  {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_58xyStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_61xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_60xStdErr},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_63yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_62yStdErr},
  {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_64xyStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_67xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_66xRMS},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_68yRMS},
  {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_71xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_70xyRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_73sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_72sumWX},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_75sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_74sumWY},
  {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_77sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_76sumWXY},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_79sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_78sumWX2},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_81sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_80sumWY2},
  {"adjacentTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_82adjacentTo},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_88__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn2D_90__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Bin2D_Dbn2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Bin2D_Dbn2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D},
  {Py_tp_doc, (void *)PyDoc_STR("Bin2D_Dbn2D(xlow, xhigh, ylow, yhigh)\n2D Bin class templated on a Dbn2D")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Bin2D_Dbn2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_11Bin2D_Dbn2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Bin2D_Dbn2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Bin2D_Dbn2D_spec = {
  "yoda.core.Bin2D_Dbn2D",
  sizeof(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Bin2D_Dbn2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Bin2D_Dbn2D = {
  __pyx_nb_add_4yoda_4core_Bin2D_Dbn2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Bin2D_Dbn2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Bin2D_Dbn2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Bin2D_Dbn2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Bin2D_Dbn2D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Bin2D_Dbn2D(xlow, xhigh, ylow, yhigh)\n2D Bin class templated on a Dbn2D"), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Bin2D_Dbn2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_11Bin2D_Dbn2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Bin2D_Dbn2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Bin2D_Dbn3D __pyx_vtable_4yoda_4core_Bin2D_Dbn3D;

static PyObject *__pyx_tp_new_4yoda_4core_Bin2D_Dbn3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Bin2D_Dbn3D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Bin2D_Dbn3D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Bin2D_Dbn3D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin2D_Dbn3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_85__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Bin2D_Dbn3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Bin2D_Dbn3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_87__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Bin2D_Dbn3D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Bin2D_Dbn3D[] = {
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_5xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_4xEdges},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_7yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_6yEdges},
  {"xyEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_9xyEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_8xyEdges},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_11xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_10xMin},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_13yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_12yMin},
  {"xyMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_15xyMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_14xyMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_17xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_16xMax},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_19yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_18yMax},
  {"xyMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_21xyMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_20xyMax},
  {"xMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_23xMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_22xMid},
  {"yMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_25yMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_24yMid},
  {"xyMid", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_27xyMid, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_26xyMid},
  {"xWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_29xWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_28xWidth},
  {"yWidth", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_31yWidth, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_30yWidth},
  {"xyWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_33xyWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_32xyWidths},
  {"area", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_35area, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_34area},
  {"xFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_37xFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_36xFocus},
  {"yFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_39yFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_38yFocus},
  {"xyFocus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_41xyFocus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_40xyFocus},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_43xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_42xMean},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_45yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_44yMean},
  {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_47xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_46xyMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_49xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_48xVariance},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_51yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_50yVariance},
  {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_53xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_52xyVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_55xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_54xStdDev},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_57yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_56yStdDev},
  {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_58xyStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_61xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_60xStdErr},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_63yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_62yStdErr},
  {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_64xyStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_67xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_66xRMS},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_69yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_68yRMS},
  {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_71xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_70xyRMS},
  {"sumWX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_73sumWX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_72sumWX},
  {"sumWY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_75sumWY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_74sumWY},
  {"sumWXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_77sumWXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_76sumWXY},
  {"sumWX2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_79sumWX2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_78sumWX2},
  {"sumWY2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_81sumWY2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_80sumWY2},
  {"adjacentTo", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_82adjacentTo},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_88__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_11Bin2D_Dbn3D_90__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Bin2D_Dbn3D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Bin2D_Dbn3D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D},
  {Py_tp_doc, (void *)PyDoc_STR("Bin2D_Dbn3D(xlow, xhigh, ylow, yhigh)\n2D Bin class templated on a Dbn3D")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Bin2D_Dbn3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_11Bin2D_Dbn3D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Bin2D_Dbn3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Bin2D_Dbn3D_spec = {
  "yoda.core.Bin2D_Dbn3D",
  sizeof(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Bin2D_Dbn3D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Bin2D_Dbn3D = {
  __pyx_nb_add_4yoda_4core_Bin2D_Dbn3D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Bin2D_Dbn3D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_Bin2D_Dbn3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Bin2D_Dbn3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_3__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Bin2D_Dbn3D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Bin2D_Dbn3D(xlow, xhigh, ylow, yhigh)\n2D Bin class templated on a Dbn3D"), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Bin2D_Dbn3D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_11Bin2D_Dbn3D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Bin2D_Dbn3D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_ProfileBin2D __pyx_vtable_4yoda_4core_ProfileBin2D;

static PyObject *__pyx_tp_new_4yoda_4core_ProfileBin2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_ProfileBin2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin2D_Dbn3D(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_ProfileBin2D *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_ProfileBin2D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_ProfileBin2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_ProfileBin2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_ProfileBin2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_ProfileBin2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_12ProfileBin2D_17__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_ProfileBin2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_ProfileBin2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_ProfileBin2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_ProfileBin2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_ProfileBin2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_ProfileBin2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_ProfileBin2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_ProfileBin2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_12ProfileBin2D_19__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_ProfileBin2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_ProfileBin2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_ProfileBin2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_ProfileBin2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_ProfileBin2D[] = {
  {"mean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_3mean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_2mean},
  {"stdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_5stdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_4stdDev},
  {"variance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_7variance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_6variance},
  {"stdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_9stdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_8stdErr},
  {"rms", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_11rms, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_10rms},
  {"sumWZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_13sumWZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_12sumWZ},
  {"sumWZ2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_15sumWZ2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_14sumWZ2},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_22__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_12ProfileBin2D_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_12ProfileBin2D_24__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_ProfileBin2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_ProfileBin2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_ProfileBin2D},
  {Py_tp_doc, (void *)PyDoc_STR("ProfileBin2D(xlow, xhigh, ylow, yhigh)")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_ProfileBin2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_12ProfileBin2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_ProfileBin2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_ProfileBin2D_spec = {
  "yoda.core.ProfileBin2D",
  sizeof(struct __pyx_obj_4yoda_4core_ProfileBin2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_ProfileBin2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_ProfileBin2D = {
  __pyx_nb_add_4yoda_4core_ProfileBin2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_ProfileBin2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_ProfileBin2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""ProfileBin2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_ProfileBin2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_12ProfileBin2D_21__repr__, /*tp_repr*/
  &__pyx_tp_as_number_ProfileBin2D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("ProfileBin2D(xlow, xhigh, ylow, yhigh)"), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_ProfileBin2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_12ProfileBin2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_ProfileBin2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_HistoBin2D __pyx_vtable_4yoda_4core_HistoBin2D;

static PyObject *__pyx_tp_new_4yoda_4core_HistoBin2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_HistoBin2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Bin2D_Dbn2D(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_HistoBin2D *)o);
  p->__pyx_base.__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_HistoBin2D;
  return o;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_HistoBin2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_HistoBin2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_HistoBin2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_HistoBin2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10HistoBin2D_13__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_HistoBin2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_HistoBin2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_HistoBin2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_HistoBin2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_HistoBin2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_HistoBin2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_HistoBin2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_HistoBin2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_10HistoBin2D_15__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_HistoBin2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_HistoBin2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_HistoBin2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_HistoBin2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_10HistoBin2D_17__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_10HistoBin2D_17__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_HistoBin2D[] = {
  {"volume", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_3volume, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_2volume},
  {"height", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_5height, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_4height},
  {"volumeErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_7volumeErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_6volumeErr},
  {"heightErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_9heightErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_8heightErr},
  {"relErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_11relErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_10relErr},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_10HistoBin2D_17__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_19__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_18__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_10HistoBin2D_21__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_10HistoBin2D_20__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_HistoBin2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_10HistoBin2D_17__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_HistoBin2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_HistoBin2D},
  {Py_tp_doc, (void *)PyDoc_STR("HistoBin2D(xlow, xhigh, ylow, yhigh)")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Bin},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Bin},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_HistoBin2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_10HistoBin2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_HistoBin2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_HistoBin2D_spec = {
  "yoda.core.HistoBin2D",
  sizeof(struct __pyx_obj_4yoda_4core_HistoBin2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_HistoBin2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_HistoBin2D = {
  __pyx_nb_add_4yoda_4core_HistoBin2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_HistoBin2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  0, /*nb_inplace_add*/
  0, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  0, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PyTypeObject __pyx_type_4yoda_4core_HistoBin2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""HistoBin2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_HistoBin2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Bin, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_10HistoBin2D_17__repr__, /*tp_repr*/
  &__pyx_tp_as_number_HistoBin2D, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("HistoBin2D(xlow, xhigh, ylow, yhigh)"), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Bin, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Bin, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_HistoBin2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_10HistoBin2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_HistoBin2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Histo2D __pyx_vtable_4yoda_4core_Histo2D;

static PyObject *__pyx_tp_new_4yoda_4core_Histo2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Histo2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Histo2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Histo2D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Histo2D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Histo2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Histo2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Histo2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo2D_103__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Histo2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Histo2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Histo2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Histo2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Histo2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo2D_105__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Histo2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Histo2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static CYTHON_INLINE PyObject *__pyx_nb_divide_4yoda_4core_Histo2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_divide_4yoda_4core_Histo2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Histo2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo2D_107__div__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Histo2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Histo2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Histo2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_true_divide_4yoda_4core_Histo2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Histo2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_7Histo2D_109__truediv__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Histo2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Histo2D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Histo2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Histo2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Histo2D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Histo2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Histo2D[] = {
  {"_Histo2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_3_Histo2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_2__init2},
  {"_Histo2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_5_Histo2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_4__init4},
  {"_Histo2D__init8", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_7_Histo2D__init8, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_6__init8},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Histo2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_14reset},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_16clone},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_18fill},
  {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_20fillBin},
  {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_22totalDbn},
  {"integral", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_25integral, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_24integral},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_27numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_26numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_29effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_28effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_31sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_30sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_33sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_32sumW2},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_35xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_34xMean},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_37yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_36yMean},
  {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_39xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_38xyMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_41xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_40xVariance},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_43yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_42yVariance},
  {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_45xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_44xyVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_47xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_46xStdDev},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_49yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_48yStdDev},
  {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_51xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_50xyStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_53xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_52xStdErr},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_55yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_54yStdErr},
  {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_57xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_56xyStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_59xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_58xRMS},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_61yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_60yRMS},
  {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_63xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_62xyRMS},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_65scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_64scaleW},
  {"normalize", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_67normalize, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_66normalize},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_69xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_68xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_71xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_70xMax},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_73yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_72yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_75yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_74yMax},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_77numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_76numBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_79numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_78numBinsX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_81numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_80numBinsY},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_83bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_82bins},
  {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_85bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_84bin},
  {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_87binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_86binIndexAt},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_89binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_88binAt},
  {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_91addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_90addBin},
  {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_93addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_92addBins},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_95mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_94mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_97divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_96divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_111_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_110_mknp},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_113xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_112xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_115xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_114xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_117xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_116xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_119xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_118xMax},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_121xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_120xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_123xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_122xMaxs},
  {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_125xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_124xMids},
  {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_127xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_126xFoci},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_129xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_128xVals},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_131xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_130xErrs},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_133yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_132yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_135yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_134yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_137yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_136yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_139yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_138yMax},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_141yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_140yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_143yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_142yMaxs},
  {"yMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_145yMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_144yMids},
  {"yFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_147yFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_146yFoci},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_149yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_148yVals},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_151yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_150yErrs},
  {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_153sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_152sumWs},
  {"heights", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_155heights, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_154heights},
  {"volumes", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_157volumes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_156volumes},
  {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_159zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_158zVals},
  {"heightErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_161heightErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_160heightErrs},
  {"volumeErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_163volumeErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_162volumeErrs},
  {"relErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_165relErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_164relErrs},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_167zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_166zErrs},
  {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_169zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_168zMins},
  {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_171zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_170zMaxs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_173zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_172zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_175zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_174zMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_177__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_176__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Histo2D_179__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Histo2D_178__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Histo2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Histo2D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Histo2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Histo2D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Histo2D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_7Histo2D_99__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_7Histo2D_101__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Histo2D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_7Histo2D_9__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Histo2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_7Histo2D_9__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_7Histo2D_11__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Histo2D(*args, **kwargs)\n\n    2D histogram.\n\n    Complete histogramming is supported, including uniform/regular binning,\n    variable-width bininng, unbinned gaps in the covered range, and outflows\n    (under/overflows around all edges and corners).\n\n    Rebinning by integer factors, or by explicit merging of contiguous bins is\n    also supported, but in development.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the\n    result is still a valid Histo2D. Binning-compatible 2D histograms\n    may be divided, resulting in a Scatter3D since further fills would\n    not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo2D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo2D(nxbins, xlow, xhigh, nybins, ylow, yhigh, path=\"\", title=\"\").\n      Construct a histogram with nxbins on the x axis and nybins on the y\n      axis, distributed linearly between the respective low--high limits.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Histo2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Histo2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Histo2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Histo2D_spec = {
  "yoda.core.Histo2D",
  sizeof(struct __pyx_obj_4yoda_4core_Histo2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Histo2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Histo2D = {
  __pyx_nb_add_4yoda_4core_Histo2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Histo2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Histo2D, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_7Histo2D_99__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_7Histo2D_101__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  __pyx_nb_true_divide_4yoda_4core_Histo2D, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Histo2D = {
  __pyx_pw_4yoda_4core_7Histo2D_9__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Histo2D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Histo2D = {
  __pyx_pw_4yoda_4core_7Histo2D_9__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_7Histo2D_11__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Histo2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Histo2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Histo2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Histo2D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Histo2D, /*tp_as_number*/
  &__pyx_tp_as_sequence_Histo2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Histo2D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Histo2D(*args, **kwargs)\n\n    2D histogram.\n\n    Complete histogramming is supported, including uniform/regular binning,\n    variable-width bininng, unbinned gaps in the covered range, and outflows\n    (under/overflows around all edges and corners).\n\n    Rebinning by integer factors, or by explicit merging of contiguous bins is\n    also supported, but in development.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the\n    result is still a valid Histo2D. Binning-compatible 2D histograms\n    may be divided, resulting in a Scatter3D since further fills would\n    not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo2D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo2D(nxbins, xlow, xhigh, nybins, ylow, yhigh, path=\"\", title=\"\").\n      Construct a histogram with nxbins on the x axis and nybins on the y\n      axis, distributed linearly between the respective low--high limits.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Histo2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Histo2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Histo2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Profile2D __pyx_vtable_4yoda_4core_Profile2D;

static PyObject *__pyx_tp_new_4yoda_4core_Profile2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Profile2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Profile2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Profile2D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Profile2D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static CYTHON_INLINE PyObject *__pyx_nb_add_4yoda_4core_Profile2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_add : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_add);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_add_4yoda_4core_Profile2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Profile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile2D_101__add__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_add == &__pyx_nb_add_4yoda_4core_Profile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_add_4yoda_4core_Profile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static CYTHON_INLINE PyObject *__pyx_nb_subtract_4yoda_4core_Profile2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_subtract : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_subtract);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_subtract_4yoda_4core_Profile2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Profile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile2D_103__sub__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_subtract == &__pyx_nb_subtract_4yoda_4core_Profile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_subtract_4yoda_4core_Profile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



#if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
static CYTHON_INLINE PyObject *__pyx_nb_divide_4yoda_4core_Profile2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_divide_4yoda_4core_Profile2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Profile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile2D_105__div__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_divide == &__pyx_nb_divide_4yoda_4core_Profile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_divide_4yoda_4core_Profile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}


#endif

static CYTHON_INLINE PyObject *__pyx_nb_true_divide_4yoda_4core_Profile2D_maybe_call_slot(PyTypeObject* type, PyObject *left, PyObject *right ) {
    binaryfunc slot;
#if CYTHON_USE_TYPE_SLOTS || PY_MAJOR_VERSION < 3 || CYTHON_COMPILING_IN_PYPY
    slot = type->tp_as_number ? type->tp_as_number->nb_true_divide : NULL;
#else
    slot = (binaryfunc) PyType_GetSlot(type, Py_nb_true_divide);
#endif
    return slot ? slot(left, right ) : __Pyx_NewRef(Py_NotImplemented);
}
static PyObject *__pyx_nb_true_divide_4yoda_4core_Profile2D(PyObject *left, PyObject *right ) {
    int maybe_self_is_left, maybe_self_is_right = 0;
    maybe_self_is_left = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(left)->tp_as_number && Py_TYPE(left)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Profile2D)
#endif
            || __Pyx_TypeCheck(left, __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_left) {
        PyObject *res;
        res = __pyx_pw_4yoda_4core_9Profile2D_107__truediv__(left, right);
        if (res != Py_NotImplemented) return res;
        Py_DECREF(res);
    }
    maybe_self_is_right = Py_TYPE(left) == Py_TYPE(right)
#if CYTHON_USE_TYPE_SLOTS
            || (Py_TYPE(right)->tp_as_number && Py_TYPE(right)->tp_as_number->nb_true_divide == &__pyx_nb_true_divide_4yoda_4core_Profile2D)
#endif
            || PyType_IsSubtype(Py_TYPE(right), __pyx_ptype_4yoda_4core_Profile2D);
    if (maybe_self_is_right) {
        return __pyx_nb_true_divide_4yoda_4core_Profile2D_maybe_call_slot(__Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4core_Profile2D, tp_base, PyTypeObject*), left, right );
    }
    return __Pyx_NewRef(Py_NotImplemented);
}



static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_9Profile2D_13__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Profile2D_13__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Profile2D[] = {
  {"_Profile2D__init2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_3_Profile2D__init2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_2__init2},
  {"_Profile2D__init4", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_5_Profile2D__init4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_4__init4},
  {"_Profile2D__init8", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_7_Profile2D__init8, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_6__init8},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Profile2D_13__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_15reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_14reset},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_17clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_16clone},
  {"fill", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_19fill, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_18fill},
  {"fillBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_21fillBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_20fillBin},
  {"totalDbn", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_23totalDbn, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_22totalDbn},
  {"numEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_25numEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_24numEntries},
  {"effNumEntries", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_27effNumEntries, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_26effNumEntries},
  {"sumW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_29sumW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_28sumW},
  {"sumW2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_31sumW2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_30sumW2},
  {"xMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_33xMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_32xMean},
  {"yMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_35yMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_34yMean},
  {"xyMean", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_37xyMean, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_36xyMean},
  {"xVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_39xVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_38xVariance},
  {"yVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_41yVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_40yVariance},
  {"xyVariance", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_43xyVariance, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_42xyVariance},
  {"xStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_45xStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_44xStdDev},
  {"yStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_47yStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_46yStdDev},
  {"xyStdDev", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_49xyStdDev, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_48xyStdDev},
  {"xStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_51xStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_50xStdErr},
  {"yStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_53yStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_52yStdErr},
  {"xyStdErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_55xyStdErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_54xyStdErr},
  {"xRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_57xRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_56xRMS},
  {"yRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_59yRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_58yRMS},
  {"xyRMS", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_61xyRMS, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_60xyRMS},
  {"scaleW", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_63scaleW, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_62scaleW},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_65scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_64scaleZ},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_67xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_66xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_69xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_68xMax},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_71yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_70yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_73yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_72yMax},
  {"numBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_75numBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_74numBins},
  {"numBinsX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_77numBinsX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_76numBinsX},
  {"numBinsY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_79numBinsY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_78numBinsY},
  {"bins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_81bins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_80bins},
  {"bin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_83bin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_82bin},
  {"binIndexAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_85binIndexAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_84binIndexAt},
  {"binAt", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_87binAt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_86binAt},
  {"addBin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_89addBin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_88addBin},
  {"addBins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_91addBins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_90addBins},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_93mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_92mkScatter},
  {"divideBy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_95divideBy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_94divideBy},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_109_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_108_mknp},
  {"xEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_111xEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_110xEdges},
  {"xWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_113xWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_112xWidths},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_115xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_114xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_117xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_116xMax},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_119xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_118xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_121xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_120xMaxs},
  {"xMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_123xMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_122xMids},
  {"xFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_125xFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_124xFoci},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_127xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_126xVals},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_129xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_128xErrs},
  {"yEdges", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_131yEdges, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_130yEdges},
  {"yWidths", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_133yWidths, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_132yWidths},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_135yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_134yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_137yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_136yMax},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_139yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_138yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_141yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_140yMaxs},
  {"yMids", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_143yMids, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_142yMids},
  {"yFoci", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_145yFoci, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_144yFoci},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_147yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_146yVals},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_149yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_148yErrs},
  {"sumWs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_151sumWs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_150sumWs},
  {"zMeans", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_153zMeans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_152zMeans},
  {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_155zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_154zVals},
  {"zStdErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_157zStdErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_156zStdErrs},
  {"zStdDevs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_159zStdDevs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_158zStdDevs},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_161zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_160zErrs},
  {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_163zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_162zMins},
  {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_165zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_164zMaxs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_167zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_166zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_169zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_168zMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_171__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_170__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Profile2D_173__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Profile2D_172__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Profile2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Profile2D_13__repr__},
  {Py_nb_add, (void *)__pyx_nb_add_4yoda_4core_Profile2D},
  {Py_nb_subtract, (void *)__pyx_nb_subtract_4yoda_4core_Profile2D},
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  {Py_nb_divide, (void *)__pyx_nb_divide_4yoda_4core_Profile2D},
  #endif
  {Py_nb_inplace_add, (void *)__pyx_pw_4yoda_4core_9Profile2D_97__iadd__},
  {Py_nb_inplace_subtract, (void *)__pyx_pw_4yoda_4core_9Profile2D_99__isub__},
  {Py_nb_true_divide, (void *)__pyx_nb_true_divide_4yoda_4core_Profile2D},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Profile2D_9__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Profile2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Profile2D_9__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Profile2D_11__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Profile2D(*args, **kwargs)\n\n    2D profile histogram, used to measure mean values of a z variable, binned in x and y.\n\n    Complete histogramming is supported, including uniform/regular binning,\n    variable-width bininng, unbinned gaps in the covered range, and outflows\n    (under/overflows around all edges and corners).\n\n    Rebinning by integer factors, or by explicit merging of contiguous bins is\n    also supported, but in development.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the\n    result is still a valid Histo2D. Binning-compatible 1D histograms\n    may be divided, resulting in a Scatter3D since further fills would\n    not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo2D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo2D(nxbins, xlow, xhigh, nybins, ylow, yhigh, path=\"\", title=\"\").\n      Construct a histogram with nxbins on the x axis and nybins on the y\n      axis, distributed linearly between the respective low--high limits.\n\n    NOT YET FINISHED: please contact the YODA authors if you require extra functionality.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Profile2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Profile2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Profile2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Profile2D_spec = {
  "yoda.core.Profile2D",
  sizeof(struct __pyx_obj_4yoda_4core_Profile2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Profile2D_slots,
};
#else

static PyNumberMethods __pyx_tp_as_number_Profile2D = {
  __pyx_nb_add_4yoda_4core_Profile2D, /*nb_add*/
  __pyx_nb_subtract_4yoda_4core_Profile2D, /*nb_subtract*/
  0, /*nb_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  __pyx_nb_divide_4yoda_4core_Profile2D, /*nb_divide*/
  #endif
  0, /*nb_remainder*/
  0, /*nb_divmod*/
  0, /*nb_power*/
  0, /*nb_negative*/
  0, /*nb_positive*/
  0, /*nb_absolute*/
  0, /*nb_bool*/
  0, /*nb_invert*/
  0, /*nb_lshift*/
  0, /*nb_rshift*/
  0, /*nb_and*/
  0, /*nb_xor*/
  0, /*nb_or*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_coerce*/
  #endif
  0, /*nb_int*/
  #if PY_MAJOR_VERSION < 3
  0, /*nb_long*/
  #else
  0, /*reserved*/
  #endif
  0, /*nb_float*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_oct*/
  #endif
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_hex*/
  #endif
  __pyx_pw_4yoda_4core_9Profile2D_97__iadd__, /*nb_inplace_add*/
  __pyx_pw_4yoda_4core_9Profile2D_99__isub__, /*nb_inplace_subtract*/
  0, /*nb_inplace_multiply*/
  #if PY_MAJOR_VERSION < 3 || (CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03050000)
  0, /*nb_inplace_divide*/
  #endif
  0, /*nb_inplace_remainder*/
  0, /*nb_inplace_power*/
  0, /*nb_inplace_lshift*/
  0, /*nb_inplace_rshift*/
  0, /*nb_inplace_and*/
  0, /*nb_inplace_xor*/
  0, /*nb_inplace_or*/
  0, /*nb_floor_divide*/
  __pyx_nb_true_divide_4yoda_4core_Profile2D, /*nb_true_divide*/
  0, /*nb_inplace_floor_divide*/
  0, /*nb_inplace_true_divide*/
  0, /*nb_index*/
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_matrix_multiply*/
  #endif
  #if PY_VERSION_HEX >= 0x03050000
  0, /*nb_inplace_matrix_multiply*/
  #endif
};

static PySequenceMethods __pyx_tp_as_sequence_Profile2D = {
  __pyx_pw_4yoda_4core_9Profile2D_9__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Profile2D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Profile2D = {
  __pyx_pw_4yoda_4core_9Profile2D_9__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Profile2D_11__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Profile2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Profile2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Profile2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_9Profile2D_13__repr__, /*tp_repr*/
  &__pyx_tp_as_number_Profile2D, /*tp_as_number*/
  &__pyx_tp_as_sequence_Profile2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Profile2D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Profile2D(*args, **kwargs)\n\n    2D profile histogram, used to measure mean values of a z variable, binned in x and y.\n\n    Complete histogramming is supported, including uniform/regular binning,\n    variable-width bininng, unbinned gaps in the covered range, and outflows\n    (under/overflows around all edges and corners).\n\n    Rebinning by integer factors, or by explicit merging of contiguous bins is\n    also supported, but in development.\n\n    Rescaling of weights and/or the x axis is permitted in-place: the\n    result is still a valid Histo2D. Binning-compatible 1D histograms\n    may be divided, resulting in a Scatter3D since further fills would\n    not be meaningful.\n\n    Several sets of arguments are tried by the constructor in the\n    following order.\n\n    Histo2D(path=\"\", title=\"\").\n      Construct a histogram with optional path and title but no bins.\n\n    Histo2D(nxbins, xlow, xhigh, nybins, ylow, yhigh, path=\"\", title=\"\").\n      Construct a histogram with nxbins on the x axis and nybins on the y\n      axis, distributed linearly between the respective low--high limits.\n\n    NOT YET FINISHED: please contact the YODA authors if you require extra functionality.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Profile2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_9Profile2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Profile2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Point __pyx_vtable_4yoda_4core_Point;

static PyObject *__pyx_tp_new_4yoda_4core_Point(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Point *p;
  PyObject *o = __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_new, newfunc)(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Point *)o);
  p->__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Point;
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core_Point(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core_Point) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_4yoda_4core_5Point_1__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  PyObject_GC_Track(o);
  if (likely(__pyx_ptype_4yoda_4util_Base)) __Pyx_PyType_GetSlot(__pyx_ptype_4yoda_4util_Base, tp_dealloc, destructor)(o); else __Pyx_call_next_tp_dealloc(o, __pyx_tp_dealloc_4yoda_4core_Point);
}

static int __pyx_tp_traverse_4yoda_4core_Point(PyObject *o, visitproc v, void *a) {
  int e;
  e = ((likely(__pyx_ptype_4yoda_4util_Base)) ? ((__pyx_ptype_4yoda_4util_Base->tp_traverse) ? __pyx_ptype_4yoda_4util_Base->tp_traverse(o, v, a) : 0) : __Pyx_call_next_tp_traverse(o, v, a, __pyx_tp_traverse_4yoda_4core_Point)); if (e) return e;
  return 0;
}

static int __pyx_tp_clear_4yoda_4core_Point(PyObject *o) {
  if (likely(__pyx_ptype_4yoda_4util_Base)) { if (__pyx_ptype_4yoda_4util_Base->tp_clear) __pyx_ptype_4yoda_4util_Base->tp_clear(o); } else __Pyx_call_next_tp_clear(o, __pyx_tp_clear_4yoda_4core_Point);
  return 0;
}

static PyMethodDef __pyx_methods_4yoda_4core_Point[] = {
  {"dim", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_3dim, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_2dim},
  {"val", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_5val, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_4val},
  {"setVal", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_7setVal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_6setVal},
  {"errs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_9errs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_8errs},
  {"setErr", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_11setErr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_10setErr},
  {"setErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_13setErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_12setErrs},
  {"errMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_15errMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_14errMinus},
  {"setErrMinus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_17setErrMinus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_16setErrMinus},
  {"errPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_19errPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_18errPlus},
  {"setErrPlus", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_21setErrPlus, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_20setErrPlus},
  {"errAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_23errAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_22errAvg},
  {"set", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_25set, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_24set},
  {"errMap", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_27errMap, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_26errMap},
  {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_29rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_28rmVariations},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_31scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_30scale},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_32__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_5Point_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_5Point_34__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Point_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core_Point},
  {Py_tp_doc, (void *)PyDoc_STR("\n    A generic point with errors, used by the Scatter classes.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Point},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Point},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Point},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Point},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Point_spec = {
  "yoda.core.Point",
  sizeof(struct __pyx_obj_4yoda_4core_Point),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Point_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Point = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Point", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Point), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Point, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("\n    A generic point with errors, used by the Scatter classes.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Point, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Point, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Point, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Point, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Point1D __pyx_vtable_4yoda_4core_Point1D;

static PyObject *__pyx_tp_new_4yoda_4core_Point1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Point1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Point(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Point1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Point1D;
  return o;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Point1D_29__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point1D_29__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point1D[] = {
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_2copy},
  {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_5setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_4setXErrs},
  {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_7setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_6setXErrs},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_9x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_8x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_11setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_10setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_13xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_12xErrs},
  {"xErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_15xErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_14xErrsFromSource},
  {"setXErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point1D_17setXErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_16setXErrs},
  {"setYErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_19setYErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_18setYErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_21xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_20xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_23xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_22xMax},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_25xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_24xErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_27scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_26scaleX},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point1D_29__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_32__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point1D_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point1D_34__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Point1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Point1D_29__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point1D(x=0, xerrs=0, source='')\n\n    A 1D point with errors, used by the Scatter1D class.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Point},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Point},
  {Py_tp_richcompare, (void *)__pyx_pw_4yoda_4core_7Point1D_31__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Point1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Point1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Point1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Point1D_spec = {
  "yoda.core.Point1D",
  sizeof(struct __pyx_obj_4yoda_4core_Point1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Point1D_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Point1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Point1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Point1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Point, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Point1D_29__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Point1D(x=0, xerrs=0, source='')\n\n    A 1D point with errors, used by the Scatter1D class.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Point, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Point, /*tp_clear*/
  __pyx_pw_4yoda_4core_7Point1D_31__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Point1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Point1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Point1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Point2D __pyx_vtable_4yoda_4core_Point2D;

static PyObject *__pyx_tp_new_4yoda_4core_Point2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Point2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Point(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Point2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Point2D;
  return o;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Point2D_43__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point2D_43__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point2D[] = {
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_2copy},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_5x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_4x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_7setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_6setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_9xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_8xErrs},
  {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_11setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_10setXErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_13xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_12xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_15xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_14xMax},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_17xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_16xErrAvg},
  {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_19y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_18y},
  {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_21setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_20setY},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_23yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_22yErrs},
  {"yErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_25yErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_24yErrsFromSource},
  {"setYErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point2D_27setYErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_26setYErrs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_29yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_28yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_31yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_30yMax},
  {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_33yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_32yErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_35scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_34scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_37scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_36scaleY},
  {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_39scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_38scaleXY},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_41scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_40scale},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point2D_43__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_47__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_46__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point2D_49__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point2D_48__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Point2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Point2D_43__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point2D(x=0, y=0, xerrs=0, yerrs=0, source='')\n\n    A 2D point with errors, used by the Scatter2D class.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Point},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Point},
  {Py_tp_richcompare, (void *)__pyx_pw_4yoda_4core_7Point2D_45__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Point2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Point2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Point2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Point2D_spec = {
  "yoda.core.Point2D",
  sizeof(struct __pyx_obj_4yoda_4core_Point2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Point2D_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Point2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Point2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Point2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Point, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Point2D_43__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Point2D(x=0, y=0, xerrs=0, yerrs=0, source='')\n\n    A 2D point with errors, used by the Scatter2D class.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Point, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Point, /*tp_clear*/
  __pyx_pw_4yoda_4core_7Point2D_45__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Point2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Point2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Point2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Point3D __pyx_vtable_4yoda_4core_Point3D;

static PyObject *__pyx_tp_new_4yoda_4core_Point3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Point3D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_Point(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Point3D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Point3D;
  return o;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_7Point3D_61__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_7Point3D_61__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Point3D[] = {
  {"copy", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_3copy, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_2copy},
  {"x", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_5x, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_4x},
  {"setX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_7setX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_6setX},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_9xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_8xErrs},
  {"setXErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_11setXErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_10setXErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_13xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_12xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_15xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_14xMax},
  {"xErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_17xErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_16xErrAvg},
  {"y", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_19y, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_18y},
  {"setY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_21setY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_20setY},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_23yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_22yErrs},
  {"setYErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_25setYErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_24setYErrs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_27yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_26yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_29yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_28yMax},
  {"yErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_31yErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_30yErrAvg},
  {"z", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_33z, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_32z},
  {"setZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_35setZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_34setZ},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_37zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_36zErrs},
  {"zErrsFromSource", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_39zErrsFromSource, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_38zErrsFromSource},
  {"setZErrs", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_7Point3D_41setZErrs, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_40setZErrs},
  {"setZErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_43setZErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_42setZErrs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_45zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_44zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_47zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_46zMax},
  {"zErrAvg", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_49zErrAvg, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_48zErrAvg},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_51scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_50scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_53scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_52scaleY},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_55scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_54scaleZ},
  {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_57scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_56scaleXYZ},
  {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_59scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_58scaleXYZ},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_7Point3D_61__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_65__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_64__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_7Point3D_67__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_7Point3D_66__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Point3D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_7Point3D_61__repr__},
  {Py_tp_doc, (void *)PyDoc_STR("Point3D(x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source='')\n\n    A 3D point with errors, used by the Scatter3D class.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_Point},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_Point},
  {Py_tp_richcompare, (void *)__pyx_pw_4yoda_4core_7Point3D_63__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Point3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_7Point3D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Point3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Point3D_spec = {
  "yoda.core.Point3D",
  sizeof(struct __pyx_obj_4yoda_4core_Point3D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Point3D_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core_Point3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Point3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Point3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_Point, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_7Point3D_61__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Point3D(x=0, y=0, z=0, xerrs=0, yerrs=0, zerrs=0, source='')\n\n    A 3D point with errors, used by the Scatter3D class.\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_Point, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_Point, /*tp_clear*/
  __pyx_pw_4yoda_4core_7Point3D_63__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Point3D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_7Point3D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Point3D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Scatter1D __pyx_vtable_4yoda_4core_Scatter1D;

static PyObject *__pyx_tp_new_4yoda_4core_Scatter1D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Scatter1D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Scatter1D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Scatter1D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Scatter1D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter1D_9__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter1D_9__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter1D[] = {
  {"_Scatter1D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_3_Scatter1D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_2__init_2},
  {"_Scatter1D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_5_Scatter1D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_4__init_3},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_6clone},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter1D_9__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_10reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_12numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_16points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_18point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_22addPoint},
  {"_Scatter1D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_24__addPoint_explicit},
  {"_Scatter1D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_26__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_28addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_30rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_32rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_34combineWith},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_36mkScatter},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_38scaleX},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_41scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_40scale},
  {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_43transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_42transformX},
  {"parseVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_45parseVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_44parseVariations},
  {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_47updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_46updateTotalUncertainty},
  {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_48writeVariationsToAnnotations},
  {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_51variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_50variations},
  {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_53rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_52rmVariations},
  {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_54hasValidErrorBreakdown},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_57_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_56_mknp},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_59xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_58xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_61xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_60xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_63xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_62xMaxs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_65xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_64xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_67xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_66xMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_69__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_68__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter1D_71__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter1D_70__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Scatter1D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Scatter1D_9__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter1D_15__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter1D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter1D_15__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter1D_21__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Scatter1D(*args, **kwargs)\n\n    1D scatter plot, i.e. a collection of Point1D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter1D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter1D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Scatter1D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Scatter1D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Scatter1D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Scatter1D_spec = {
  "yoda.core.Scatter1D",
  sizeof(struct __pyx_obj_4yoda_4core_Scatter1D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Scatter1D_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Scatter1D = {
  __pyx_pw_4yoda_4core_9Scatter1D_15__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Scatter1D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Scatter1D = {
  __pyx_pw_4yoda_4core_9Scatter1D_15__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter1D_21__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Scatter1D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Scatter1D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Scatter1D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter1D_9__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Scatter1D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Scatter1D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Scatter1D(*args, **kwargs)\n\n    1D scatter plot, i.e. a collection of Point1D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter1D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter1D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Scatter1D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter1D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Scatter1D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Scatter2D __pyx_vtable_4yoda_4core_Scatter2D;

static PyObject *__pyx_tp_new_4yoda_4core_Scatter2D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Scatter2D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Scatter2D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Scatter2D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Scatter2D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter2D_9__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter2D_9__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter2D[] = {
  {"_Scatter2D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_3_Scatter2D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_2__init_2},
  {"_Scatter2D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_5_Scatter2D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_4__init_3},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_6clone},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter2D_9__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_10reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_12numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_16points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_18point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_22addPoint},
  {"_Scatter2D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_24__addPoint_explicit},
  {"_Scatter2D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_26__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_28addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_30rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_32rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_34combineWith},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_36mkScatter},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_38scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_41scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_40scaleY},
  {"scaleXY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_43scaleXY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_42scaleXY},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_45scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_44scale},
  {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_47transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_46transformX},
  {"transformY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_49transformY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_48transformY},
  {"parseVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_51parseVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_50parseVariations},
  {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_53updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_52updateTotalUncertainty},
  {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_54writeVariationsToAnnotations},
  {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_57variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_56variations},
  {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_59rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_58rmVariations},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_61_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_60_mknp},
  {"covarianceMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_63covarianceMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_62covarianceMatrix},
  {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_64hasValidErrorBreakdown},
  {"correlationMatrix", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_67correlationMatrix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_66correlationMatrix},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_69xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_68xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_71xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_70xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_73xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_72xMaxs},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_75xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_74xErrs},
  {"xErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_77xErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_76xErrAvgs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_79xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_78xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_81xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_80xMax},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_83yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_82yVals},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_85yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_84yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_87yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_86yMaxs},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_89yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_88yErrs},
  {"yErrAvgs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_91yErrAvgs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_90yErrAvgs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_93yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_92yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_95yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_94yMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_97__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_96__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter2D_99__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter2D_98__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Scatter2D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Scatter2D_9__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter2D_15__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter2D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter2D_15__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter2D_21__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Scatter2D(*args, **kwargs)\n\n    2D scatter plot, i.e. a collection of Point2D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter2D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter2D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Scatter2D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Scatter2D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Scatter2D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Scatter2D_spec = {
  "yoda.core.Scatter2D",
  sizeof(struct __pyx_obj_4yoda_4core_Scatter2D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Scatter2D_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Scatter2D = {
  __pyx_pw_4yoda_4core_9Scatter2D_15__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Scatter2D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Scatter2D = {
  __pyx_pw_4yoda_4core_9Scatter2D_15__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter2D_21__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Scatter2D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Scatter2D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Scatter2D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter2D_9__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Scatter2D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Scatter2D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Scatter2D(*args, **kwargs)\n\n    2D scatter plot, i.e. a collection of Point2D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter2D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter2D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Scatter2D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter2D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Scatter2D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_4yoda_4core_Scatter3D __pyx_vtable_4yoda_4core_Scatter3D;

static PyObject *__pyx_tp_new_4yoda_4core_Scatter3D(PyTypeObject *t, PyObject *a, PyObject *k) {
  struct __pyx_obj_4yoda_4core_Scatter3D *p;
  PyObject *o = __pyx_tp_new_4yoda_4core_AnalysisObject(t, a, k);
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_4yoda_4core_Scatter3D *)o);
  p->__pyx_base.__pyx_base.__pyx_vtab = (struct __pyx_vtabstruct_4yoda_4util_Base*)__pyx_vtabptr_4yoda_4core_Scatter3D;
  return o;
}
static PyObject *__pyx_sq_item_4yoda_4core_Scatter3D(PyObject *o, Py_ssize_t i) {
  PyObject *r;
  PyObject *x = PyInt_FromSsize_t(i); if(!x) return 0;
  r = Py_TYPE(o)->tp_as_mapping->mp_subscript(o, x);
  Py_DECREF(x);
  return r;
}

static PyObject *__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter3D_9__repr__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  return __pyx_pw_4yoda_4core_9Scatter3D_9__repr__(self);
}

static PyMethodDef __pyx_methods_4yoda_4core_Scatter3D[] = {
  {"_Scatter3D__init_2", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_3_Scatter3D__init_2, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_2__init_2},
  {"_Scatter3D__init_3", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_5_Scatter3D__init_3, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_4__init_3},
  {"clone", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_7clone, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_6clone},
  {"__repr__", (PyCFunction)__pyx_specialmethod___pyx_pw_4yoda_4core_9Scatter3D_9__repr__, METH_NOARGS|METH_COEXIST, 0},
  {"reset", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_11reset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_10reset},
  {"numPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_13numPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_12numPoints},
  {"points", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_17points, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_16points},
  {"point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_19point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_18point},
  {"addPoint", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_23addPoint, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_22addPoint},
  {"_Scatter3D__addPoint_explicit", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_24__addPoint_explicit},
  {"_Scatter3D__addPoint_point", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_26__addPoint_point},
  {"addPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_29addPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_28addPoints},
  {"rmPoint", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_31rmPoint, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_30rmPoint},
  {"rmPoints", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_33rmPoints, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_32rmPoints},
  {"combineWith", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_35combineWith, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_34combineWith},
  {"mkScatter", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_37mkScatter, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_36mkScatter},
  {"scaleX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_39scaleX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_38scaleX},
  {"scaleY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_41scaleY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_40scaleY},
  {"scaleZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_43scaleZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_42scaleZ},
  {"scaleXYZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_45scaleXYZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_44scaleXYZ},
  {"scale", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_47scale, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_46scale},
  {"transformX", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_49transformX, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_48transformX},
  {"transformY", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_51transformY, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_50transformY},
  {"transformZ", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_53transformZ, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_52transformZ},
  {"updateTotalUncertainty", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_55updateTotalUncertainty, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_54updateTotalUncertainty},
  {"writeVariationsToAnnotations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_56writeVariationsToAnnotations},
  {"variations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_59variations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_58variations},
  {"rmVariations", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_61rmVariations, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_60rmVariations},
  {"hasValidErrorBreakdown", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_62hasValidErrorBreakdown},
  {"covarianceMatrix", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_65covarianceMatrix, METH_VARARGS|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_64covarianceMatrix},
  {"_mknp", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_67_mknp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_66_mknp},
  {"xVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_69xVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_68xVals},
  {"xMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_71xMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_70xMins},
  {"xMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_73xMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_72xMaxs},
  {"xErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_75xErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_74xErrs},
  {"xMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_77xMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_76xMin},
  {"xMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_79xMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_78xMax},
  {"yVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_81yVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_80yVals},
  {"yMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_83yMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_82yMins},
  {"yMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_85yMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_84yMaxs},
  {"yErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_87yErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_86yErrs},
  {"yMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_89yMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_88yMin},
  {"yMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_91yMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_90yMax},
  {"zVals", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_93zVals, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_92zVals},
  {"zMins", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_95zMins, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_94zMins},
  {"zMaxs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_97zMaxs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_96zMaxs},
  {"zErrs", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_99zErrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_98zErrs},
  {"zMin", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_101zMin, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_100zMin},
  {"zMax", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_103zMax, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_102zMax},
  {"__reduce_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_105__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_104__reduce_cython__},
  {"__setstate_cython__", (PyCFunction)(void*)(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_4yoda_4core_9Scatter3D_107__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_4yoda_4core_9Scatter3D_106__setstate_cython__},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core_Scatter3D_slots[] = {
  {Py_tp_repr, (void *)__pyx_pw_4yoda_4core_9Scatter3D_9__repr__},
  {Py_sq_length, (void *)__pyx_pw_4yoda_4core_9Scatter3D_15__len__},
  {Py_sq_item, (void *)__pyx_sq_item_4yoda_4core_Scatter3D},
  {Py_mp_length, (void *)__pyx_pw_4yoda_4core_9Scatter3D_15__len__},
  {Py_mp_subscript, (void *)__pyx_pw_4yoda_4core_9Scatter3D_21__getitem__},
  {Py_tp_doc, (void *)PyDoc_STR("Scatter3D(*args, **kwargs)\n\n    3D scatter plot, i.e. a collection of Point3D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter3D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter3D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core_AnalysisObject},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core_AnalysisObject},
  {Py_tp_methods, (void *)__pyx_methods_4yoda_4core_Scatter3D},
  {Py_tp_init, (void *)__pyx_pw_4yoda_4core_9Scatter3D_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core_Scatter3D},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core_Scatter3D_spec = {
  "yoda.core.Scatter3D",
  sizeof(struct __pyx_obj_4yoda_4core_Scatter3D),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core_Scatter3D_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_Scatter3D = {
  __pyx_pw_4yoda_4core_9Scatter3D_15__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  __pyx_sq_item_4yoda_4core_Scatter3D, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_Scatter3D = {
  __pyx_pw_4yoda_4core_9Scatter3D_15__len__, /*mp_length*/
  __pyx_pw_4yoda_4core_9Scatter3D_21__getitem__, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_4yoda_4core_Scatter3D = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""Scatter3D", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core_Scatter3D), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core_AnalysisObject, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter3D_9__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_Scatter3D, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_Scatter3D, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  PyDoc_STR("Scatter3D(*args, **kwargs)\n\n    3D scatter plot, i.e. a collection of Point3D objects with positions and errors.\n\n    Constructor calling idioms:\n\n    Scatter3D(path=\"\", title=\"\")\n      Create a new empty scatter, with optional path and title.\n\n    Scatter3D(points, path=\"\", title=\"\"):\n      Create a new empty scatter from an iterable of points, with optional path\n      and title.\n\n    TODO: more documentation!\n    "), /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core_AnalysisObject, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core_AnalysisObject, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_4yoda_4core_Scatter3D, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_4yoda_4core_9Scatter3D_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core_Scatter3D, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *__pyx_freelist_4yoda_4core___pyx_scope_struct__annotationsDict[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct__annotationsDict = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct__annotationsDict(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct__annotationsDict > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct__annotationsDict[--__pyx_freecount_4yoda_4core___pyx_scope_struct__annotationsDict];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct__annotationsDict(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct__annotationsDict) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct__annotationsDict < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct__annotationsDict[__pyx_freecount_4yoda_4core___pyx_scope_struct__annotationsDict++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct__annotationsDict(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)o;
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core___pyx_scope_struct__annotationsDict(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict *)o;
  tmp = ((PyObject*)p->__pyx_v_self);
  p->__pyx_v_self = ((struct __pyx_obj_4yoda_4core_AnalysisObject *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct__annotationsDict},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct__annotationsDict},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core___pyx_scope_struct__annotationsDict},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct__annotationsDict},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict_spec = {
  "yoda.core.__pyx_scope_struct__annotationsDict",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct__annotationsDict", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct__annotationsDict), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct__annotationsDict, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct__annotationsDict, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core___pyx_scope_struct__annotationsDict, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct__annotationsDict, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_1_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_1_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_1_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_1_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_1_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_1_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_1_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_k);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_1_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_1_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_k) {
    e = (*v)(p->__pyx_v_k, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_1_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_1_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_1_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_1_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_1_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_1_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_1_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_2_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_2_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_2_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_2_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_2_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_2_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_2_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_2_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_x);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_2_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_2_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_2_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_2_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr *)o;
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_x) {
    e = (*v)(p->__pyx_v_x, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_2_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_2_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_2_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_2_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_2_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_2_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_2_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_2_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_2_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_3_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_3_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_3_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_3_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_3_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_3_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_3_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_3_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_x);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_3_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_3_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_3_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_3_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr *)o;
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_x) {
    e = (*v)(p->__pyx_v_x, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_3_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_3_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_3_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_3_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_3_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_3_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_3_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_3_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_3_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_4_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_4_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_4_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_4_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_4_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_4_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_4_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_4_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_k);
  Py_CLEAR(p->__pyx_v_v);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_4_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_4_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_4_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_4_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr *)o;
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_k) {
    e = (*v)(p->__pyx_v_k, a); if (e) return e;
  }
  if (p->__pyx_v_v) {
    e = (*v)(p->__pyx_v_v, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_4_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_4_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_4_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_4_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_4_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_4_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_4_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_4_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_4_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *__pyx_freelist_4yoda_4core___pyx_scope_struct_5__pattern_check[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_5__pattern_check = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_5__pattern_check(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_5__pattern_check > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_5__pattern_check[--__pyx_freecount_4yoda_4core___pyx_scope_struct_5__pattern_check];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5__pattern_check(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5__pattern_check) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_name);
  Py_CLEAR(p->__pyx_v_re);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_5__pattern_check < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_5__pattern_check[__pyx_freecount_4yoda_4core___pyx_scope_struct_5__pattern_check++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_5__pattern_check(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)o;
  if (p->__pyx_v_name) {
    e = (*v)(p->__pyx_v_name, a); if (e) return e;
  }
  if (p->__pyx_v_re) {
    e = (*v)(p->__pyx_v_re, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_4yoda_4core___pyx_scope_struct_5__pattern_check(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check *)o;
  tmp = ((PyObject*)p->__pyx_v_name);
  p->__pyx_v_name = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_re);
  p->__pyx_v_re = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5__pattern_check},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_5__pattern_check},
  {Py_tp_clear, (void *)__pyx_tp_clear_4yoda_4core___pyx_scope_struct_5__pattern_check},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_5__pattern_check},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check_spec = {
  "yoda.core.__pyx_scope_struct_5__pattern_check",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_5__pattern_check", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_5__pattern_check), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_5__pattern_check, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_5__pattern_check, /*tp_traverse*/
  __pyx_tp_clear_4yoda_4core___pyx_scope_struct_5__pattern_check, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_5__pattern_check, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_6_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_6_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_6_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_6_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_6_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_6_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_6_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_patt);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_6_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_6_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_patt) {
    e = (*v)(p->__pyx_v_patt, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_6_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_6_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_6_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_6_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_6_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_6_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_6_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *__pyx_freelist_4yoda_4core___pyx_scope_struct_7_genexpr[8];
static int __pyx_freecount_4yoda_4core___pyx_scope_struct_7_genexpr = 0;

static PyObject *__pyx_tp_new_4yoda_4core___pyx_scope_struct_7_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (CYTHON_COMPILING_IN_CPYTHON && likely((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_7_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr)))) {
    o = (PyObject*)__pyx_freelist_4yoda_4core___pyx_scope_struct_7_genexpr[--__pyx_freecount_4yoda_4core___pyx_scope_struct_7_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_7_genexpr(PyObject *o) {
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_7_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_genexpr_arg_0);
  Py_CLEAR(p->__pyx_v_patt);
  if (CYTHON_COMPILING_IN_CPYTHON && ((int)(__pyx_freecount_4yoda_4core___pyx_scope_struct_7_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr)))) {
    __pyx_freelist_4yoda_4core___pyx_scope_struct_7_genexpr[__pyx_freecount_4yoda_4core___pyx_scope_struct_7_genexpr++] = ((struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_7_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *p = (struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_genexpr_arg_0) {
    e = (*v)(p->__pyx_genexpr_arg_0, a); if (e) return e;
  }
  if (p->__pyx_v_patt) {
    e = (*v)(p->__pyx_v_patt, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_7_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_4yoda_4core___pyx_scope_struct_7_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_4yoda_4core___pyx_scope_struct_7_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr_spec = {
  "yoda.core.__pyx_scope_struct_7_genexpr",
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "yoda.core.""__pyx_scope_struct_7_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_4yoda_4core___pyx_scope_struct_7_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_4yoda_4core___pyx_scope_struct_7_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #endif
  #if PY_MAJOR_VERSION >= 3
  0, /*tp_as_async*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_4yoda_4core___pyx_scope_struct_7_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_4yoda_4core___pyx_scope_struct_7_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  0, /*tp_version_tag*/
  #if PY_VERSION_HEX >= 0x030400a1
  #if CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif
/* #### Code section: pystring_table ### */

static int __Pyx_CreateStringTabAndInitStrings(void) {
  __Pyx_StringTabEntry __pyx_string_tab[] = {
    {&__pyx_kp_s_0_2e, __pyx_k_0_2e, sizeof(__pyx_k_0_2e), 0, 0, 1, 0},
    {&__pyx_n_s_AO, __pyx_k_AO, sizeof(__pyx_k_AO), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject, __pyx_k_AnalysisObject, sizeof(__pyx_k_AnalysisObject), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject___reduce_cython, __pyx_k_AnalysisObject___reduce_cython, sizeof(__pyx_k_AnalysisObject___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject___setstate_cython, __pyx_k_AnalysisObject___setstate_cython, sizeof(__pyx_k_AnalysisObject___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_annotation, __pyx_k_AnalysisObject_annotation, sizeof(__pyx_k_AnalysisObject_annotation), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_annotations, __pyx_k_AnalysisObject_annotations, sizeof(__pyx_k_AnalysisObject_annotations), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_annotationsDict, __pyx_k_AnalysisObject_annotationsDict, sizeof(__pyx_k_AnalysisObject_annotationsDict), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_clearAnnotations, __pyx_k_AnalysisObject_clearAnnotations, sizeof(__pyx_k_AnalysisObject_clearAnnotations), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_dim, __pyx_k_AnalysisObject_dim, sizeof(__pyx_k_AnalysisObject_dim), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_dump, __pyx_k_AnalysisObject_dump, sizeof(__pyx_k_AnalysisObject_dump), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_hasAnnotation, __pyx_k_AnalysisObject_hasAnnotation, sizeof(__pyx_k_AnalysisObject_hasAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_name, __pyx_k_AnalysisObject_name, sizeof(__pyx_k_AnalysisObject_name), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_path, __pyx_k_AnalysisObject_path, sizeof(__pyx_k_AnalysisObject_path), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_rmAnnotation, __pyx_k_AnalysisObject_rmAnnotation, sizeof(__pyx_k_AnalysisObject_rmAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_setAnnotation, __pyx_k_AnalysisObject_setAnnotation, sizeof(__pyx_k_AnalysisObject_setAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_setPath, __pyx_k_AnalysisObject_setPath, sizeof(__pyx_k_AnalysisObject_setPath), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_setTitle, __pyx_k_AnalysisObject_setTitle, sizeof(__pyx_k_AnalysisObject_setTitle), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_title, __pyx_k_AnalysisObject_title, sizeof(__pyx_k_AnalysisObject_title), 0, 0, 1, 1},
    {&__pyx_n_s_AnalysisObject_type, __pyx_k_AnalysisObject_type, sizeof(__pyx_k_AnalysisObject_type), 0, 0, 1, 1},
    {&__pyx_n_s_AssertionError, __pyx_k_AssertionError, sizeof(__pyx_k_AssertionError), 0, 0, 1, 1},
    {&__pyx_n_s_Bin, __pyx_k_Bin, sizeof(__pyx_k_Bin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D, __pyx_k_Bin1D_Dbn1D, sizeof(__pyx_k_Bin1D_Dbn1D), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D___reduce_cython, __pyx_k_Bin1D_Dbn1D___reduce_cython, sizeof(__pyx_k_Bin1D_Dbn1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D___setstate_cython, __pyx_k_Bin1D_Dbn1D___setstate_cython, sizeof(__pyx_k_Bin1D_Dbn1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_merge, __pyx_k_Bin1D_Dbn1D_merge, sizeof(__pyx_k_Bin1D_Dbn1D_merge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_sumWX, __pyx_k_Bin1D_Dbn1D_sumWX, sizeof(__pyx_k_Bin1D_Dbn1D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_sumWX2, __pyx_k_Bin1D_Dbn1D_sumWX2, sizeof(__pyx_k_Bin1D_Dbn1D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xEdges, __pyx_k_Bin1D_Dbn1D_xEdges, sizeof(__pyx_k_Bin1D_Dbn1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xFocus, __pyx_k_Bin1D_Dbn1D_xFocus, sizeof(__pyx_k_Bin1D_Dbn1D_xFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xMax, __pyx_k_Bin1D_Dbn1D_xMax, sizeof(__pyx_k_Bin1D_Dbn1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xMean, __pyx_k_Bin1D_Dbn1D_xMean, sizeof(__pyx_k_Bin1D_Dbn1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xMid, __pyx_k_Bin1D_Dbn1D_xMid, sizeof(__pyx_k_Bin1D_Dbn1D_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xMin, __pyx_k_Bin1D_Dbn1D_xMin, sizeof(__pyx_k_Bin1D_Dbn1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xRMS, __pyx_k_Bin1D_Dbn1D_xRMS, sizeof(__pyx_k_Bin1D_Dbn1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xStdDev, __pyx_k_Bin1D_Dbn1D_xStdDev, sizeof(__pyx_k_Bin1D_Dbn1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xStdErr, __pyx_k_Bin1D_Dbn1D_xStdErr, sizeof(__pyx_k_Bin1D_Dbn1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xVariance, __pyx_k_Bin1D_Dbn1D_xVariance, sizeof(__pyx_k_Bin1D_Dbn1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn1D_xWidth, __pyx_k_Bin1D_Dbn1D_xWidth, sizeof(__pyx_k_Bin1D_Dbn1D_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D, __pyx_k_Bin1D_Dbn2D, sizeof(__pyx_k_Bin1D_Dbn2D), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D___reduce_cython, __pyx_k_Bin1D_Dbn2D___reduce_cython, sizeof(__pyx_k_Bin1D_Dbn2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D___setstate_cython, __pyx_k_Bin1D_Dbn2D___setstate_cython, sizeof(__pyx_k_Bin1D_Dbn2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_merge, __pyx_k_Bin1D_Dbn2D_merge, sizeof(__pyx_k_Bin1D_Dbn2D_merge), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_sumWX, __pyx_k_Bin1D_Dbn2D_sumWX, sizeof(__pyx_k_Bin1D_Dbn2D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_sumWX2, __pyx_k_Bin1D_Dbn2D_sumWX2, sizeof(__pyx_k_Bin1D_Dbn2D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xEdges, __pyx_k_Bin1D_Dbn2D_xEdges, sizeof(__pyx_k_Bin1D_Dbn2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xFocus, __pyx_k_Bin1D_Dbn2D_xFocus, sizeof(__pyx_k_Bin1D_Dbn2D_xFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xMax, __pyx_k_Bin1D_Dbn2D_xMax, sizeof(__pyx_k_Bin1D_Dbn2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xMean, __pyx_k_Bin1D_Dbn2D_xMean, sizeof(__pyx_k_Bin1D_Dbn2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xMid, __pyx_k_Bin1D_Dbn2D_xMid, sizeof(__pyx_k_Bin1D_Dbn2D_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xMin, __pyx_k_Bin1D_Dbn2D_xMin, sizeof(__pyx_k_Bin1D_Dbn2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xRMS, __pyx_k_Bin1D_Dbn2D_xRMS, sizeof(__pyx_k_Bin1D_Dbn2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xStdDev, __pyx_k_Bin1D_Dbn2D_xStdDev, sizeof(__pyx_k_Bin1D_Dbn2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xStdErr, __pyx_k_Bin1D_Dbn2D_xStdErr, sizeof(__pyx_k_Bin1D_Dbn2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xVariance, __pyx_k_Bin1D_Dbn2D_xVariance, sizeof(__pyx_k_Bin1D_Dbn2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin1D_Dbn2D_xWidth, __pyx_k_Bin1D_Dbn2D_xWidth, sizeof(__pyx_k_Bin1D_Dbn2D_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D, __pyx_k_Bin2D_Dbn2D, sizeof(__pyx_k_Bin2D_Dbn2D), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D___reduce_cython, __pyx_k_Bin2D_Dbn2D___reduce_cython, sizeof(__pyx_k_Bin2D_Dbn2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D___setstate_cython, __pyx_k_Bin2D_Dbn2D___setstate_cython, sizeof(__pyx_k_Bin2D_Dbn2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_adjacentTo, __pyx_k_Bin2D_Dbn2D_adjacentTo, sizeof(__pyx_k_Bin2D_Dbn2D_adjacentTo), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_area, __pyx_k_Bin2D_Dbn2D_area, sizeof(__pyx_k_Bin2D_Dbn2D_area), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_sumWX, __pyx_k_Bin2D_Dbn2D_sumWX, sizeof(__pyx_k_Bin2D_Dbn2D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_sumWX2, __pyx_k_Bin2D_Dbn2D_sumWX2, sizeof(__pyx_k_Bin2D_Dbn2D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_sumWXY, __pyx_k_Bin2D_Dbn2D_sumWXY, sizeof(__pyx_k_Bin2D_Dbn2D_sumWXY), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_sumWY, __pyx_k_Bin2D_Dbn2D_sumWY, sizeof(__pyx_k_Bin2D_Dbn2D_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_sumWY2, __pyx_k_Bin2D_Dbn2D_sumWY2, sizeof(__pyx_k_Bin2D_Dbn2D_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xEdges, __pyx_k_Bin2D_Dbn2D_xEdges, sizeof(__pyx_k_Bin2D_Dbn2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xFocus, __pyx_k_Bin2D_Dbn2D_xFocus, sizeof(__pyx_k_Bin2D_Dbn2D_xFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xMax, __pyx_k_Bin2D_Dbn2D_xMax, sizeof(__pyx_k_Bin2D_Dbn2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xMean, __pyx_k_Bin2D_Dbn2D_xMean, sizeof(__pyx_k_Bin2D_Dbn2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xMid, __pyx_k_Bin2D_Dbn2D_xMid, sizeof(__pyx_k_Bin2D_Dbn2D_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xMin, __pyx_k_Bin2D_Dbn2D_xMin, sizeof(__pyx_k_Bin2D_Dbn2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xRMS, __pyx_k_Bin2D_Dbn2D_xRMS, sizeof(__pyx_k_Bin2D_Dbn2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xStdDev, __pyx_k_Bin2D_Dbn2D_xStdDev, sizeof(__pyx_k_Bin2D_Dbn2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xStdErr, __pyx_k_Bin2D_Dbn2D_xStdErr, sizeof(__pyx_k_Bin2D_Dbn2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xVariance, __pyx_k_Bin2D_Dbn2D_xVariance, sizeof(__pyx_k_Bin2D_Dbn2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xWidth, __pyx_k_Bin2D_Dbn2D_xWidth, sizeof(__pyx_k_Bin2D_Dbn2D_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyEdges, __pyx_k_Bin2D_Dbn2D_xyEdges, sizeof(__pyx_k_Bin2D_Dbn2D_xyEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyFocus, __pyx_k_Bin2D_Dbn2D_xyFocus, sizeof(__pyx_k_Bin2D_Dbn2D_xyFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyMax, __pyx_k_Bin2D_Dbn2D_xyMax, sizeof(__pyx_k_Bin2D_Dbn2D_xyMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyMean, __pyx_k_Bin2D_Dbn2D_xyMean, sizeof(__pyx_k_Bin2D_Dbn2D_xyMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyMid, __pyx_k_Bin2D_Dbn2D_xyMid, sizeof(__pyx_k_Bin2D_Dbn2D_xyMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyMin, __pyx_k_Bin2D_Dbn2D_xyMin, sizeof(__pyx_k_Bin2D_Dbn2D_xyMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyRMS, __pyx_k_Bin2D_Dbn2D_xyRMS, sizeof(__pyx_k_Bin2D_Dbn2D_xyRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyStdDev, __pyx_k_Bin2D_Dbn2D_xyStdDev, sizeof(__pyx_k_Bin2D_Dbn2D_xyStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyStdErr, __pyx_k_Bin2D_Dbn2D_xyStdErr, sizeof(__pyx_k_Bin2D_Dbn2D_xyStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyVariance, __pyx_k_Bin2D_Dbn2D_xyVariance, sizeof(__pyx_k_Bin2D_Dbn2D_xyVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_xyWidths, __pyx_k_Bin2D_Dbn2D_xyWidths, sizeof(__pyx_k_Bin2D_Dbn2D_xyWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yEdges, __pyx_k_Bin2D_Dbn2D_yEdges, sizeof(__pyx_k_Bin2D_Dbn2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yFocus, __pyx_k_Bin2D_Dbn2D_yFocus, sizeof(__pyx_k_Bin2D_Dbn2D_yFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yMax, __pyx_k_Bin2D_Dbn2D_yMax, sizeof(__pyx_k_Bin2D_Dbn2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yMean, __pyx_k_Bin2D_Dbn2D_yMean, sizeof(__pyx_k_Bin2D_Dbn2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yMid, __pyx_k_Bin2D_Dbn2D_yMid, sizeof(__pyx_k_Bin2D_Dbn2D_yMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yMin, __pyx_k_Bin2D_Dbn2D_yMin, sizeof(__pyx_k_Bin2D_Dbn2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yRMS, __pyx_k_Bin2D_Dbn2D_yRMS, sizeof(__pyx_k_Bin2D_Dbn2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yStdDev, __pyx_k_Bin2D_Dbn2D_yStdDev, sizeof(__pyx_k_Bin2D_Dbn2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yStdErr, __pyx_k_Bin2D_Dbn2D_yStdErr, sizeof(__pyx_k_Bin2D_Dbn2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yVariance, __pyx_k_Bin2D_Dbn2D_yVariance, sizeof(__pyx_k_Bin2D_Dbn2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn2D_yWidth, __pyx_k_Bin2D_Dbn2D_yWidth, sizeof(__pyx_k_Bin2D_Dbn2D_yWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D, __pyx_k_Bin2D_Dbn3D, sizeof(__pyx_k_Bin2D_Dbn3D), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D___reduce_cython, __pyx_k_Bin2D_Dbn3D___reduce_cython, sizeof(__pyx_k_Bin2D_Dbn3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D___setstate_cython, __pyx_k_Bin2D_Dbn3D___setstate_cython, sizeof(__pyx_k_Bin2D_Dbn3D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_adjacentTo, __pyx_k_Bin2D_Dbn3D_adjacentTo, sizeof(__pyx_k_Bin2D_Dbn3D_adjacentTo), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_area, __pyx_k_Bin2D_Dbn3D_area, sizeof(__pyx_k_Bin2D_Dbn3D_area), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_sumWX, __pyx_k_Bin2D_Dbn3D_sumWX, sizeof(__pyx_k_Bin2D_Dbn3D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_sumWX2, __pyx_k_Bin2D_Dbn3D_sumWX2, sizeof(__pyx_k_Bin2D_Dbn3D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_sumWXY, __pyx_k_Bin2D_Dbn3D_sumWXY, sizeof(__pyx_k_Bin2D_Dbn3D_sumWXY), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_sumWY, __pyx_k_Bin2D_Dbn3D_sumWY, sizeof(__pyx_k_Bin2D_Dbn3D_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_sumWY2, __pyx_k_Bin2D_Dbn3D_sumWY2, sizeof(__pyx_k_Bin2D_Dbn3D_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xEdges, __pyx_k_Bin2D_Dbn3D_xEdges, sizeof(__pyx_k_Bin2D_Dbn3D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xFocus, __pyx_k_Bin2D_Dbn3D_xFocus, sizeof(__pyx_k_Bin2D_Dbn3D_xFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xMax, __pyx_k_Bin2D_Dbn3D_xMax, sizeof(__pyx_k_Bin2D_Dbn3D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xMean, __pyx_k_Bin2D_Dbn3D_xMean, sizeof(__pyx_k_Bin2D_Dbn3D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xMid, __pyx_k_Bin2D_Dbn3D_xMid, sizeof(__pyx_k_Bin2D_Dbn3D_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xMin, __pyx_k_Bin2D_Dbn3D_xMin, sizeof(__pyx_k_Bin2D_Dbn3D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xRMS, __pyx_k_Bin2D_Dbn3D_xRMS, sizeof(__pyx_k_Bin2D_Dbn3D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xStdDev, __pyx_k_Bin2D_Dbn3D_xStdDev, sizeof(__pyx_k_Bin2D_Dbn3D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xStdErr, __pyx_k_Bin2D_Dbn3D_xStdErr, sizeof(__pyx_k_Bin2D_Dbn3D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xVariance, __pyx_k_Bin2D_Dbn3D_xVariance, sizeof(__pyx_k_Bin2D_Dbn3D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xWidth, __pyx_k_Bin2D_Dbn3D_xWidth, sizeof(__pyx_k_Bin2D_Dbn3D_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyEdges, __pyx_k_Bin2D_Dbn3D_xyEdges, sizeof(__pyx_k_Bin2D_Dbn3D_xyEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyFocus, __pyx_k_Bin2D_Dbn3D_xyFocus, sizeof(__pyx_k_Bin2D_Dbn3D_xyFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyMax, __pyx_k_Bin2D_Dbn3D_xyMax, sizeof(__pyx_k_Bin2D_Dbn3D_xyMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyMean, __pyx_k_Bin2D_Dbn3D_xyMean, sizeof(__pyx_k_Bin2D_Dbn3D_xyMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyMid, __pyx_k_Bin2D_Dbn3D_xyMid, sizeof(__pyx_k_Bin2D_Dbn3D_xyMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyMin, __pyx_k_Bin2D_Dbn3D_xyMin, sizeof(__pyx_k_Bin2D_Dbn3D_xyMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyRMS, __pyx_k_Bin2D_Dbn3D_xyRMS, sizeof(__pyx_k_Bin2D_Dbn3D_xyRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyStdDev, __pyx_k_Bin2D_Dbn3D_xyStdDev, sizeof(__pyx_k_Bin2D_Dbn3D_xyStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyStdErr, __pyx_k_Bin2D_Dbn3D_xyStdErr, sizeof(__pyx_k_Bin2D_Dbn3D_xyStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyVariance, __pyx_k_Bin2D_Dbn3D_xyVariance, sizeof(__pyx_k_Bin2D_Dbn3D_xyVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_xyWidths, __pyx_k_Bin2D_Dbn3D_xyWidths, sizeof(__pyx_k_Bin2D_Dbn3D_xyWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yEdges, __pyx_k_Bin2D_Dbn3D_yEdges, sizeof(__pyx_k_Bin2D_Dbn3D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yFocus, __pyx_k_Bin2D_Dbn3D_yFocus, sizeof(__pyx_k_Bin2D_Dbn3D_yFocus), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yMax, __pyx_k_Bin2D_Dbn3D_yMax, sizeof(__pyx_k_Bin2D_Dbn3D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yMean, __pyx_k_Bin2D_Dbn3D_yMean, sizeof(__pyx_k_Bin2D_Dbn3D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yMid, __pyx_k_Bin2D_Dbn3D_yMid, sizeof(__pyx_k_Bin2D_Dbn3D_yMid), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yMin, __pyx_k_Bin2D_Dbn3D_yMin, sizeof(__pyx_k_Bin2D_Dbn3D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yRMS, __pyx_k_Bin2D_Dbn3D_yRMS, sizeof(__pyx_k_Bin2D_Dbn3D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yStdDev, __pyx_k_Bin2D_Dbn3D_yStdDev, sizeof(__pyx_k_Bin2D_Dbn3D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yStdErr, __pyx_k_Bin2D_Dbn3D_yStdErr, sizeof(__pyx_k_Bin2D_Dbn3D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yVariance, __pyx_k_Bin2D_Dbn3D_yVariance, sizeof(__pyx_k_Bin2D_Dbn3D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Bin2D_Dbn3D_yWidth, __pyx_k_Bin2D_Dbn3D_yWidth, sizeof(__pyx_k_Bin2D_Dbn3D_yWidth), 0, 0, 1, 1},
    {&__pyx_n_s_Bin___reduce_cython, __pyx_k_Bin___reduce_cython, sizeof(__pyx_k_Bin___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin___setstate_cython, __pyx_k_Bin___setstate_cython, sizeof(__pyx_k_Bin___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Bin_dim, __pyx_k_Bin_dim, sizeof(__pyx_k_Bin_dim), 0, 0, 1, 1},
    {&__pyx_n_s_Bin_effNumEntries, __pyx_k_Bin_effNumEntries, sizeof(__pyx_k_Bin_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Bin_numEntries, __pyx_k_Bin_numEntries, sizeof(__pyx_k_Bin_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Bin_sumW, __pyx_k_Bin_sumW, sizeof(__pyx_k_Bin_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Bin_sumW2, __pyx_k_Bin_sumW2, sizeof(__pyx_k_Bin_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_CFUNCTYPE, __pyx_k_CFUNCTYPE, sizeof(__pyx_k_CFUNCTYPE), 0, 0, 1, 1},
    {&__pyx_kp_s_Callback_is_not_of_type_double_d, __pyx_k_Callback_is_not_of_type_double_d, sizeof(__pyx_k_Callback_is_not_of_type_double_d), 0, 0, 1, 0},
    {&__pyx_n_s_Counter, __pyx_k_Counter, sizeof(__pyx_k_Counter), 0, 0, 1, 1},
    {&__pyx_n_s_Counter___reduce_cython, __pyx_k_Counter___reduce_cython, sizeof(__pyx_k_Counter___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Counter___setstate_cython, __pyx_k_Counter___setstate_cython, sizeof(__pyx_k_Counter___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_clone, __pyx_k_Counter_clone, sizeof(__pyx_k_Counter_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_divideBy, __pyx_k_Counter_divideBy, sizeof(__pyx_k_Counter_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_effNumEntries, __pyx_k_Counter_effNumEntries, sizeof(__pyx_k_Counter_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_err, __pyx_k_Counter_err, sizeof(__pyx_k_Counter_err), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_fill, __pyx_k_Counter_fill, sizeof(__pyx_k_Counter_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_mkScatter, __pyx_k_Counter_mkScatter, sizeof(__pyx_k_Counter_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_numEntries, __pyx_k_Counter_numEntries, sizeof(__pyx_k_Counter_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_relErr, __pyx_k_Counter_relErr, sizeof(__pyx_k_Counter_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_reset, __pyx_k_Counter_reset, sizeof(__pyx_k_Counter_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_scaleW, __pyx_k_Counter_scaleW, sizeof(__pyx_k_Counter_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_sumW, __pyx_k_Counter_sumW, sizeof(__pyx_k_Counter_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_sumW2, __pyx_k_Counter_sumW2, sizeof(__pyx_k_Counter_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Counter_val, __pyx_k_Counter_val, sizeof(__pyx_k_Counter_val), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D, __pyx_k_Dbn0D, sizeof(__pyx_k_Dbn0D), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D___reduce_cython, __pyx_k_Dbn0D___reduce_cython, sizeof(__pyx_k_Dbn0D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D___setstate_cython, __pyx_k_Dbn0D___setstate_cython, sizeof(__pyx_k_Dbn0D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_copy, __pyx_k_Dbn0D_copy, sizeof(__pyx_k_Dbn0D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_effNumEntries, __pyx_k_Dbn0D_effNumEntries, sizeof(__pyx_k_Dbn0D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_errW, __pyx_k_Dbn0D_errW, sizeof(__pyx_k_Dbn0D_errW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_fill, __pyx_k_Dbn0D_fill, sizeof(__pyx_k_Dbn0D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_numEntries, __pyx_k_Dbn0D_numEntries, sizeof(__pyx_k_Dbn0D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_relErrW, __pyx_k_Dbn0D_relErrW, sizeof(__pyx_k_Dbn0D_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_reset, __pyx_k_Dbn0D_reset, sizeof(__pyx_k_Dbn0D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_scaleW, __pyx_k_Dbn0D_scaleW, sizeof(__pyx_k_Dbn0D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_sumW, __pyx_k_Dbn0D_sumW, sizeof(__pyx_k_Dbn0D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn0D_sumW2, __pyx_k_Dbn0D_sumW2, sizeof(__pyx_k_Dbn0D_sumW2), 0, 0, 1, 1},
    {&__pyx_kp_s_Dbn0D_val_g_err_g, __pyx_k_Dbn0D_val_g_err_g, sizeof(__pyx_k_Dbn0D_val_g_err_g), 0, 0, 1, 0},
    {&__pyx_n_s_Dbn1D, __pyx_k_Dbn1D, sizeof(__pyx_k_Dbn1D), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D___reduce_cython, __pyx_k_Dbn1D___reduce_cython, sizeof(__pyx_k_Dbn1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D___setstate_cython, __pyx_k_Dbn1D___setstate_cython, sizeof(__pyx_k_Dbn1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_copy, __pyx_k_Dbn1D_copy, sizeof(__pyx_k_Dbn1D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_effNumEntries, __pyx_k_Dbn1D_effNumEntries, sizeof(__pyx_k_Dbn1D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_errW, __pyx_k_Dbn1D_errW, sizeof(__pyx_k_Dbn1D_errW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_fill, __pyx_k_Dbn1D_fill, sizeof(__pyx_k_Dbn1D_fill), 0, 0, 1, 1},
    {&__pyx_kp_s_Dbn1D_mean_s_stddev_s, __pyx_k_Dbn1D_mean_s_stddev_s, sizeof(__pyx_k_Dbn1D_mean_s_stddev_s), 0, 0, 1, 0},
    {&__pyx_n_s_Dbn1D_numEntries, __pyx_k_Dbn1D_numEntries, sizeof(__pyx_k_Dbn1D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_relErrW, __pyx_k_Dbn1D_relErrW, sizeof(__pyx_k_Dbn1D_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_reset, __pyx_k_Dbn1D_reset, sizeof(__pyx_k_Dbn1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_scaleW, __pyx_k_Dbn1D_scaleW, sizeof(__pyx_k_Dbn1D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_scaleX, __pyx_k_Dbn1D_scaleX, sizeof(__pyx_k_Dbn1D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_sumW, __pyx_k_Dbn1D_sumW, sizeof(__pyx_k_Dbn1D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_sumW2, __pyx_k_Dbn1D_sumW2, sizeof(__pyx_k_Dbn1D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_sumWX, __pyx_k_Dbn1D_sumWX, sizeof(__pyx_k_Dbn1D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_sumWX2, __pyx_k_Dbn1D_sumWX2, sizeof(__pyx_k_Dbn1D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_xMean, __pyx_k_Dbn1D_xMean, sizeof(__pyx_k_Dbn1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_xRMS, __pyx_k_Dbn1D_xRMS, sizeof(__pyx_k_Dbn1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_xStdDev, __pyx_k_Dbn1D_xStdDev, sizeof(__pyx_k_Dbn1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_xStdErr, __pyx_k_Dbn1D_xStdErr, sizeof(__pyx_k_Dbn1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn1D_xVariance, __pyx_k_Dbn1D_xVariance, sizeof(__pyx_k_Dbn1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D, __pyx_k_Dbn2D, sizeof(__pyx_k_Dbn2D), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D___reduce_cython, __pyx_k_Dbn2D___reduce_cython, sizeof(__pyx_k_Dbn2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D___setstate_cython, __pyx_k_Dbn2D___setstate_cython, sizeof(__pyx_k_Dbn2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_copy, __pyx_k_Dbn2D_copy, sizeof(__pyx_k_Dbn2D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_effNumEntries, __pyx_k_Dbn2D_effNumEntries, sizeof(__pyx_k_Dbn2D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_errW, __pyx_k_Dbn2D_errW, sizeof(__pyx_k_Dbn2D_errW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_fill, __pyx_k_Dbn2D_fill, sizeof(__pyx_k_Dbn2D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_mean, __pyx_k_Dbn2D_mean, sizeof(__pyx_k_Dbn2D_mean), 0, 0, 1, 1},
    {&__pyx_kp_s_Dbn2D_mean_s_stdDev_s, __pyx_k_Dbn2D_mean_s_stdDev_s, sizeof(__pyx_k_Dbn2D_mean_s_stdDev_s), 0, 0, 1, 0},
    {&__pyx_n_s_Dbn2D_numEntries, __pyx_k_Dbn2D_numEntries, sizeof(__pyx_k_Dbn2D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_relErrW, __pyx_k_Dbn2D_relErrW, sizeof(__pyx_k_Dbn2D_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_reset, __pyx_k_Dbn2D_reset, sizeof(__pyx_k_Dbn2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_rms, __pyx_k_Dbn2D_rms, sizeof(__pyx_k_Dbn2D_rms), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_scaleW, __pyx_k_Dbn2D_scaleW, sizeof(__pyx_k_Dbn2D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_scaleX, __pyx_k_Dbn2D_scaleX, sizeof(__pyx_k_Dbn2D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_scaleXY, __pyx_k_Dbn2D_scaleXY, sizeof(__pyx_k_Dbn2D_scaleXY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_scaleY, __pyx_k_Dbn2D_scaleY, sizeof(__pyx_k_Dbn2D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_stdDev, __pyx_k_Dbn2D_stdDev, sizeof(__pyx_k_Dbn2D_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_stdErr, __pyx_k_Dbn2D_stdErr, sizeof(__pyx_k_Dbn2D_stdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumW, __pyx_k_Dbn2D_sumW, sizeof(__pyx_k_Dbn2D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumW2, __pyx_k_Dbn2D_sumW2, sizeof(__pyx_k_Dbn2D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumWX, __pyx_k_Dbn2D_sumWX, sizeof(__pyx_k_Dbn2D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumWX2, __pyx_k_Dbn2D_sumWX2, sizeof(__pyx_k_Dbn2D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumWXY, __pyx_k_Dbn2D_sumWXY, sizeof(__pyx_k_Dbn2D_sumWXY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumWY, __pyx_k_Dbn2D_sumWY, sizeof(__pyx_k_Dbn2D_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_sumWY2, __pyx_k_Dbn2D_sumWY2, sizeof(__pyx_k_Dbn2D_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn2D_variance, __pyx_k_Dbn2D_variance, sizeof(__pyx_k_Dbn2D_variance), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D, __pyx_k_Dbn3D, sizeof(__pyx_k_Dbn3D), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D___reduce_cython, __pyx_k_Dbn3D___reduce_cython, sizeof(__pyx_k_Dbn3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D___setstate_cython, __pyx_k_Dbn3D___setstate_cython, sizeof(__pyx_k_Dbn3D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_copy, __pyx_k_Dbn3D_copy, sizeof(__pyx_k_Dbn3D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_effNumEntries, __pyx_k_Dbn3D_effNumEntries, sizeof(__pyx_k_Dbn3D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_errW, __pyx_k_Dbn3D_errW, sizeof(__pyx_k_Dbn3D_errW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_fill, __pyx_k_Dbn3D_fill, sizeof(__pyx_k_Dbn3D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_mean, __pyx_k_Dbn3D_mean, sizeof(__pyx_k_Dbn3D_mean), 0, 0, 1, 1},
    {&__pyx_kp_s_Dbn3D_mean_s_stddev_s, __pyx_k_Dbn3D_mean_s_stddev_s, sizeof(__pyx_k_Dbn3D_mean_s_stddev_s), 0, 0, 1, 0},
    {&__pyx_n_s_Dbn3D_numEntries, __pyx_k_Dbn3D_numEntries, sizeof(__pyx_k_Dbn3D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_relErrW, __pyx_k_Dbn3D_relErrW, sizeof(__pyx_k_Dbn3D_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_reset, __pyx_k_Dbn3D_reset, sizeof(__pyx_k_Dbn3D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_rms, __pyx_k_Dbn3D_rms, sizeof(__pyx_k_Dbn3D_rms), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_scaleW, __pyx_k_Dbn3D_scaleW, sizeof(__pyx_k_Dbn3D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_scaleX, __pyx_k_Dbn3D_scaleX, sizeof(__pyx_k_Dbn3D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_scaleXYZ, __pyx_k_Dbn3D_scaleXYZ, sizeof(__pyx_k_Dbn3D_scaleXYZ), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_scaleY, __pyx_k_Dbn3D_scaleY, sizeof(__pyx_k_Dbn3D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_scaleZ, __pyx_k_Dbn3D_scaleZ, sizeof(__pyx_k_Dbn3D_scaleZ), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_stdDev, __pyx_k_Dbn3D_stdDev, sizeof(__pyx_k_Dbn3D_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_stdErr, __pyx_k_Dbn3D_stdErr, sizeof(__pyx_k_Dbn3D_stdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumW, __pyx_k_Dbn3D_sumW, sizeof(__pyx_k_Dbn3D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumW2, __pyx_k_Dbn3D_sumW2, sizeof(__pyx_k_Dbn3D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWX, __pyx_k_Dbn3D_sumWX, sizeof(__pyx_k_Dbn3D_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWX2, __pyx_k_Dbn3D_sumWX2, sizeof(__pyx_k_Dbn3D_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWXY, __pyx_k_Dbn3D_sumWXY, sizeof(__pyx_k_Dbn3D_sumWXY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWXZ, __pyx_k_Dbn3D_sumWXZ, sizeof(__pyx_k_Dbn3D_sumWXZ), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWY, __pyx_k_Dbn3D_sumWY, sizeof(__pyx_k_Dbn3D_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWY2, __pyx_k_Dbn3D_sumWY2, sizeof(__pyx_k_Dbn3D_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWYZ, __pyx_k_Dbn3D_sumWYZ, sizeof(__pyx_k_Dbn3D_sumWYZ), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWZ, __pyx_k_Dbn3D_sumWZ, sizeof(__pyx_k_Dbn3D_sumWZ), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_sumWZ2, __pyx_k_Dbn3D_sumWZ2, sizeof(__pyx_k_Dbn3D_sumWZ2), 0, 0, 1, 1},
    {&__pyx_n_s_Dbn3D_variance, __pyx_k_Dbn3D_variance, sizeof(__pyx_k_Dbn3D_variance), 0, 0, 1, 1},
    {&__pyx_n_s_H1D, __pyx_k_H1D, sizeof(__pyx_k_H1D), 0, 0, 1, 1},
    {&__pyx_n_s_H2D, __pyx_k_H2D, sizeof(__pyx_k_H2D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D, __pyx_k_Histo1D, sizeof(__pyx_k_Histo1D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___addBins_bins, __pyx_k_Histo1D___addBins_bins, sizeof(__pyx_k_Histo1D___addBins_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___addBins_edges, __pyx_k_Histo1D___addBins_edges, sizeof(__pyx_k_Histo1D___addBins_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___addBins_points, __pyx_k_Histo1D___addBins_points, sizeof(__pyx_k_Histo1D___addBins_points), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___addBins_tuples, __pyx_k_Histo1D___addBins_tuples, sizeof(__pyx_k_Histo1D___addBins_tuples), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___init2, __pyx_k_Histo1D___init2, sizeof(__pyx_k_Histo1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___init3, __pyx_k_Histo1D___init3, sizeof(__pyx_k_Histo1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___init5, __pyx_k_Histo1D___init5, sizeof(__pyx_k_Histo1D___init5), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___reduce_cython, __pyx_k_Histo1D___reduce_cython, sizeof(__pyx_k_Histo1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D___setstate_cython, __pyx_k_Histo1D___setstate_cython, sizeof(__pyx_k_Histo1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__addBins_bins, __pyx_k_Histo1D__addBins_bins, sizeof(__pyx_k_Histo1D__addBins_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__addBins_edges, __pyx_k_Histo1D__addBins_edges, sizeof(__pyx_k_Histo1D__addBins_edges), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__addBins_points, __pyx_k_Histo1D__addBins_points, sizeof(__pyx_k_Histo1D__addBins_points), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__addBins_tuples, __pyx_k_Histo1D__addBins_tuples, sizeof(__pyx_k_Histo1D__addBins_tuples), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__init2, __pyx_k_Histo1D__init2, sizeof(__pyx_k_Histo1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__init3, __pyx_k_Histo1D__init3, sizeof(__pyx_k_Histo1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__init3_locals_genexpr, __pyx_k_Histo1D__init3_locals_genexpr, sizeof(__pyx_k_Histo1D__init3_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__init5, __pyx_k_Histo1D__init5, sizeof(__pyx_k_Histo1D__init5), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D__mknp, __pyx_k_Histo1D__mknp, sizeof(__pyx_k_Histo1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_addBin, __pyx_k_Histo1D_addBin, sizeof(__pyx_k_Histo1D_addBin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_addBins, __pyx_k_Histo1D_addBins, sizeof(__pyx_k_Histo1D_addBins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_areaErrs, __pyx_k_Histo1D_areaErrs, sizeof(__pyx_k_Histo1D_areaErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_areas, __pyx_k_Histo1D_areas, sizeof(__pyx_k_Histo1D_areas), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_bin, __pyx_k_Histo1D_bin, sizeof(__pyx_k_Histo1D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_binAt, __pyx_k_Histo1D_binAt, sizeof(__pyx_k_Histo1D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_binIndexAt, __pyx_k_Histo1D_binIndexAt, sizeof(__pyx_k_Histo1D_binIndexAt), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_bins, __pyx_k_Histo1D_bins, sizeof(__pyx_k_Histo1D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_clone, __pyx_k_Histo1D_clone, sizeof(__pyx_k_Histo1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_divideBy, __pyx_k_Histo1D_divideBy, sizeof(__pyx_k_Histo1D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_effNumEntries, __pyx_k_Histo1D_effNumEntries, sizeof(__pyx_k_Histo1D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_fill, __pyx_k_Histo1D_fill, sizeof(__pyx_k_Histo1D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_fillBin, __pyx_k_Histo1D_fillBin, sizeof(__pyx_k_Histo1D_fillBin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_heightErrs, __pyx_k_Histo1D_heightErrs, sizeof(__pyx_k_Histo1D_heightErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_heights, __pyx_k_Histo1D_heights, sizeof(__pyx_k_Histo1D_heights), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_integral, __pyx_k_Histo1D_integral, sizeof(__pyx_k_Histo1D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_integralRange, __pyx_k_Histo1D_integralRange, sizeof(__pyx_k_Histo1D_integralRange), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_integralTo, __pyx_k_Histo1D_integralTo, sizeof(__pyx_k_Histo1D_integralTo), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_mergeBins, __pyx_k_Histo1D_mergeBins, sizeof(__pyx_k_Histo1D_mergeBins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_mkScatter, __pyx_k_Histo1D_mkScatter, sizeof(__pyx_k_Histo1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_normalize, __pyx_k_Histo1D_normalize, sizeof(__pyx_k_Histo1D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_numBins, __pyx_k_Histo1D_numBins, sizeof(__pyx_k_Histo1D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_numBinsX, __pyx_k_Histo1D_numBinsX, sizeof(__pyx_k_Histo1D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_numEntries, __pyx_k_Histo1D_numEntries, sizeof(__pyx_k_Histo1D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_overflow, __pyx_k_Histo1D_overflow, sizeof(__pyx_k_Histo1D_overflow), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_rebin, __pyx_k_Histo1D_rebin, sizeof(__pyx_k_Histo1D_rebin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_rebinBy, __pyx_k_Histo1D_rebinBy, sizeof(__pyx_k_Histo1D_rebinBy), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_rebinTo, __pyx_k_Histo1D_rebinTo, sizeof(__pyx_k_Histo1D_rebinTo), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_relErrs, __pyx_k_Histo1D_relErrs, sizeof(__pyx_k_Histo1D_relErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_reset, __pyx_k_Histo1D_reset, sizeof(__pyx_k_Histo1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_scaleW, __pyx_k_Histo1D_scaleW, sizeof(__pyx_k_Histo1D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_sumW, __pyx_k_Histo1D_sumW, sizeof(__pyx_k_Histo1D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_sumW2, __pyx_k_Histo1D_sumW2, sizeof(__pyx_k_Histo1D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_sumWs, __pyx_k_Histo1D_sumWs, sizeof(__pyx_k_Histo1D_sumWs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_toIntegral, __pyx_k_Histo1D_toIntegral, sizeof(__pyx_k_Histo1D_toIntegral), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_totalDbn, __pyx_k_Histo1D_totalDbn, sizeof(__pyx_k_Histo1D_totalDbn), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_underflow, __pyx_k_Histo1D_underflow, sizeof(__pyx_k_Histo1D_underflow), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xEdges, __pyx_k_Histo1D_xEdges, sizeof(__pyx_k_Histo1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xErrs, __pyx_k_Histo1D_xErrs, sizeof(__pyx_k_Histo1D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xFoci, __pyx_k_Histo1D_xFoci, sizeof(__pyx_k_Histo1D_xFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMax, __pyx_k_Histo1D_xMax, sizeof(__pyx_k_Histo1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMaxs, __pyx_k_Histo1D_xMaxs, sizeof(__pyx_k_Histo1D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMean, __pyx_k_Histo1D_xMean, sizeof(__pyx_k_Histo1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMids, __pyx_k_Histo1D_xMids, sizeof(__pyx_k_Histo1D_xMids), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMin, __pyx_k_Histo1D_xMin, sizeof(__pyx_k_Histo1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xMins, __pyx_k_Histo1D_xMins, sizeof(__pyx_k_Histo1D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xRMS, __pyx_k_Histo1D_xRMS, sizeof(__pyx_k_Histo1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xStdDev, __pyx_k_Histo1D_xStdDev, sizeof(__pyx_k_Histo1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xStdErr, __pyx_k_Histo1D_xStdErr, sizeof(__pyx_k_Histo1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xVals, __pyx_k_Histo1D_xVals, sizeof(__pyx_k_Histo1D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xVariance, __pyx_k_Histo1D_xVariance, sizeof(__pyx_k_Histo1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_xWidths, __pyx_k_Histo1D_xWidths, sizeof(__pyx_k_Histo1D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yErrs, __pyx_k_Histo1D_yErrs, sizeof(__pyx_k_Histo1D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yMax, __pyx_k_Histo1D_yMax, sizeof(__pyx_k_Histo1D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yMaxs, __pyx_k_Histo1D_yMaxs, sizeof(__pyx_k_Histo1D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yMin, __pyx_k_Histo1D_yMin, sizeof(__pyx_k_Histo1D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yMins, __pyx_k_Histo1D_yMins, sizeof(__pyx_k_Histo1D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo1D_yVals, __pyx_k_Histo1D_yVals, sizeof(__pyx_k_Histo1D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D, __pyx_k_Histo2D, sizeof(__pyx_k_Histo2D), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D___init2, __pyx_k_Histo2D___init2, sizeof(__pyx_k_Histo2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D___init4, __pyx_k_Histo2D___init4, sizeof(__pyx_k_Histo2D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D___init8, __pyx_k_Histo2D___init8, sizeof(__pyx_k_Histo2D___init8), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D___reduce_cython, __pyx_k_Histo2D___reduce_cython, sizeof(__pyx_k_Histo2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D___setstate_cython, __pyx_k_Histo2D___setstate_cython, sizeof(__pyx_k_Histo2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D__init2, __pyx_k_Histo2D__init2, sizeof(__pyx_k_Histo2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D__init4, __pyx_k_Histo2D__init4, sizeof(__pyx_k_Histo2D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D__init8, __pyx_k_Histo2D__init8, sizeof(__pyx_k_Histo2D__init8), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D__mknp, __pyx_k_Histo2D__mknp, sizeof(__pyx_k_Histo2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_addBin, __pyx_k_Histo2D_addBin, sizeof(__pyx_k_Histo2D_addBin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_addBins, __pyx_k_Histo2D_addBins, sizeof(__pyx_k_Histo2D_addBins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_bin, __pyx_k_Histo2D_bin, sizeof(__pyx_k_Histo2D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_binAt, __pyx_k_Histo2D_binAt, sizeof(__pyx_k_Histo2D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_binIndexAt, __pyx_k_Histo2D_binIndexAt, sizeof(__pyx_k_Histo2D_binIndexAt), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_bins, __pyx_k_Histo2D_bins, sizeof(__pyx_k_Histo2D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_clone, __pyx_k_Histo2D_clone, sizeof(__pyx_k_Histo2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_divideBy, __pyx_k_Histo2D_divideBy, sizeof(__pyx_k_Histo2D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_effNumEntries, __pyx_k_Histo2D_effNumEntries, sizeof(__pyx_k_Histo2D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_fill, __pyx_k_Histo2D_fill, sizeof(__pyx_k_Histo2D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_fillBin, __pyx_k_Histo2D_fillBin, sizeof(__pyx_k_Histo2D_fillBin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_heightErrs, __pyx_k_Histo2D_heightErrs, sizeof(__pyx_k_Histo2D_heightErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_heights, __pyx_k_Histo2D_heights, sizeof(__pyx_k_Histo2D_heights), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_integral, __pyx_k_Histo2D_integral, sizeof(__pyx_k_Histo2D_integral), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_mkScatter, __pyx_k_Histo2D_mkScatter, sizeof(__pyx_k_Histo2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_normalize, __pyx_k_Histo2D_normalize, sizeof(__pyx_k_Histo2D_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_numBins, __pyx_k_Histo2D_numBins, sizeof(__pyx_k_Histo2D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_numBinsX, __pyx_k_Histo2D_numBinsX, sizeof(__pyx_k_Histo2D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_numBinsY, __pyx_k_Histo2D_numBinsY, sizeof(__pyx_k_Histo2D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_numEntries, __pyx_k_Histo2D_numEntries, sizeof(__pyx_k_Histo2D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_relErrs, __pyx_k_Histo2D_relErrs, sizeof(__pyx_k_Histo2D_relErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_reset, __pyx_k_Histo2D_reset, sizeof(__pyx_k_Histo2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_scaleW, __pyx_k_Histo2D_scaleW, sizeof(__pyx_k_Histo2D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_sumW, __pyx_k_Histo2D_sumW, sizeof(__pyx_k_Histo2D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_sumW2, __pyx_k_Histo2D_sumW2, sizeof(__pyx_k_Histo2D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_sumWs, __pyx_k_Histo2D_sumWs, sizeof(__pyx_k_Histo2D_sumWs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_totalDbn, __pyx_k_Histo2D_totalDbn, sizeof(__pyx_k_Histo2D_totalDbn), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_volumeErrs, __pyx_k_Histo2D_volumeErrs, sizeof(__pyx_k_Histo2D_volumeErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_volumes, __pyx_k_Histo2D_volumes, sizeof(__pyx_k_Histo2D_volumes), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xEdges, __pyx_k_Histo2D_xEdges, sizeof(__pyx_k_Histo2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xErrs, __pyx_k_Histo2D_xErrs, sizeof(__pyx_k_Histo2D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xFoci, __pyx_k_Histo2D_xFoci, sizeof(__pyx_k_Histo2D_xFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMax, __pyx_k_Histo2D_xMax, sizeof(__pyx_k_Histo2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMaxs, __pyx_k_Histo2D_xMaxs, sizeof(__pyx_k_Histo2D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMean, __pyx_k_Histo2D_xMean, sizeof(__pyx_k_Histo2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMids, __pyx_k_Histo2D_xMids, sizeof(__pyx_k_Histo2D_xMids), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMin, __pyx_k_Histo2D_xMin, sizeof(__pyx_k_Histo2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xMins, __pyx_k_Histo2D_xMins, sizeof(__pyx_k_Histo2D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xRMS, __pyx_k_Histo2D_xRMS, sizeof(__pyx_k_Histo2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xStdDev, __pyx_k_Histo2D_xStdDev, sizeof(__pyx_k_Histo2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xStdErr, __pyx_k_Histo2D_xStdErr, sizeof(__pyx_k_Histo2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xVals, __pyx_k_Histo2D_xVals, sizeof(__pyx_k_Histo2D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xVariance, __pyx_k_Histo2D_xVariance, sizeof(__pyx_k_Histo2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xWidths, __pyx_k_Histo2D_xWidths, sizeof(__pyx_k_Histo2D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xyMean, __pyx_k_Histo2D_xyMean, sizeof(__pyx_k_Histo2D_xyMean), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xyRMS, __pyx_k_Histo2D_xyRMS, sizeof(__pyx_k_Histo2D_xyRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xyStdDev, __pyx_k_Histo2D_xyStdDev, sizeof(__pyx_k_Histo2D_xyStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xyStdErr, __pyx_k_Histo2D_xyStdErr, sizeof(__pyx_k_Histo2D_xyStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_xyVariance, __pyx_k_Histo2D_xyVariance, sizeof(__pyx_k_Histo2D_xyVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yEdges, __pyx_k_Histo2D_yEdges, sizeof(__pyx_k_Histo2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yErrs, __pyx_k_Histo2D_yErrs, sizeof(__pyx_k_Histo2D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yFoci, __pyx_k_Histo2D_yFoci, sizeof(__pyx_k_Histo2D_yFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMax, __pyx_k_Histo2D_yMax, sizeof(__pyx_k_Histo2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMaxs, __pyx_k_Histo2D_yMaxs, sizeof(__pyx_k_Histo2D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMean, __pyx_k_Histo2D_yMean, sizeof(__pyx_k_Histo2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMids, __pyx_k_Histo2D_yMids, sizeof(__pyx_k_Histo2D_yMids), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMin, __pyx_k_Histo2D_yMin, sizeof(__pyx_k_Histo2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yMins, __pyx_k_Histo2D_yMins, sizeof(__pyx_k_Histo2D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yRMS, __pyx_k_Histo2D_yRMS, sizeof(__pyx_k_Histo2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yStdDev, __pyx_k_Histo2D_yStdDev, sizeof(__pyx_k_Histo2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yStdErr, __pyx_k_Histo2D_yStdErr, sizeof(__pyx_k_Histo2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yVals, __pyx_k_Histo2D_yVals, sizeof(__pyx_k_Histo2D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yVariance, __pyx_k_Histo2D_yVariance, sizeof(__pyx_k_Histo2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_yWidths, __pyx_k_Histo2D_yWidths, sizeof(__pyx_k_Histo2D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zErrs, __pyx_k_Histo2D_zErrs, sizeof(__pyx_k_Histo2D_zErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zMax, __pyx_k_Histo2D_zMax, sizeof(__pyx_k_Histo2D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zMaxs, __pyx_k_Histo2D_zMaxs, sizeof(__pyx_k_Histo2D_zMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zMin, __pyx_k_Histo2D_zMin, sizeof(__pyx_k_Histo2D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zMins, __pyx_k_Histo2D_zMins, sizeof(__pyx_k_Histo2D_zMins), 0, 0, 1, 1},
    {&__pyx_n_s_Histo2D_zVals, __pyx_k_Histo2D_zVals, sizeof(__pyx_k_Histo2D_zVals), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D, __pyx_k_HistoBin1D, sizeof(__pyx_k_HistoBin1D), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D___reduce_cython, __pyx_k_HistoBin1D___reduce_cython, sizeof(__pyx_k_HistoBin1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D___setstate_cython, __pyx_k_HistoBin1D___setstate_cython, sizeof(__pyx_k_HistoBin1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D_area, __pyx_k_HistoBin1D_area, sizeof(__pyx_k_HistoBin1D_area), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D_areaErr, __pyx_k_HistoBin1D_areaErr, sizeof(__pyx_k_HistoBin1D_areaErr), 0, 0, 1, 1},
    {&__pyx_kp_s_HistoBin1D_g_g_sumw_g, __pyx_k_HistoBin1D_g_g_sumw_g, sizeof(__pyx_k_HistoBin1D_g_g_sumw_g), 0, 0, 1, 0},
    {&__pyx_n_s_HistoBin1D_height, __pyx_k_HistoBin1D_height, sizeof(__pyx_k_HistoBin1D_height), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D_heightErr, __pyx_k_HistoBin1D_heightErr, sizeof(__pyx_k_HistoBin1D_heightErr), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin1D_relErr, __pyx_k_HistoBin1D_relErr, sizeof(__pyx_k_HistoBin1D_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D, __pyx_k_HistoBin2D, sizeof(__pyx_k_HistoBin2D), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D___reduce_cython, __pyx_k_HistoBin2D___reduce_cython, sizeof(__pyx_k_HistoBin2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D___setstate_cython, __pyx_k_HistoBin2D___setstate_cython, sizeof(__pyx_k_HistoBin2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_kp_s_HistoBin2D_g_g_g_g_sumw_g, __pyx_k_HistoBin2D_g_g_g_g_sumw_g, sizeof(__pyx_k_HistoBin2D_g_g_g_g_sumw_g), 0, 0, 1, 0},
    {&__pyx_n_s_HistoBin2D_height, __pyx_k_HistoBin2D_height, sizeof(__pyx_k_HistoBin2D_height), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D_heightErr, __pyx_k_HistoBin2D_heightErr, sizeof(__pyx_k_HistoBin2D_heightErr), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D_relErr, __pyx_k_HistoBin2D_relErr, sizeof(__pyx_k_HistoBin2D_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D_volume, __pyx_k_HistoBin2D_volume, sizeof(__pyx_k_HistoBin2D_volume), 0, 0, 1, 1},
    {&__pyx_n_s_HistoBin2D_volumeErr, __pyx_k_HistoBin2D_volumeErr, sizeof(__pyx_k_HistoBin2D_volumeErr), 0, 0, 1, 1},
    {&__pyx_n_s_ImportError, __pyx_k_ImportError, sizeof(__pyx_k_ImportError), 0, 0, 1, 1},
    {&__pyx_n_s_Index, __pyx_k_Index, sizeof(__pyx_k_Index), 0, 0, 1, 1},
    {&__pyx_n_s_IndexError, __pyx_k_IndexError, sizeof(__pyx_k_IndexError), 0, 0, 1, 1},
    {&__pyx_n_s_Index___init, __pyx_k_Index___init, sizeof(__pyx_k_Index___init), 0, 0, 1, 1},
    {&__pyx_n_s_Index___repr, __pyx_k_Index___repr, sizeof(__pyx_k_Index___repr), 0, 0, 1, 1},
    {&__pyx_kp_s_Index_of_a_file, __pyx_k_Index_of_a_file, sizeof(__pyx_k_Index_of_a_file), 0, 0, 1, 0},
    {&__pyx_n_s_Index_toDict, __pyx_k_Index_toDict, sizeof(__pyx_k_Index_toDict), 0, 0, 1, 1},
    {&__pyx_n_s_MemoryError, __pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 0, 1, 1},
    {&__pyx_kp_s_Null_pointer_referenced_perhaps, __pyx_k_Null_pointer_referenced_perhaps, sizeof(__pyx_k_Null_pointer_referenced_perhaps), 0, 0, 1, 0},
    {&__pyx_n_s_OrderedDict, __pyx_k_OrderedDict, sizeof(__pyx_k_OrderedDict), 0, 0, 1, 1},
    {&__pyx_n_s_P1D, __pyx_k_P1D, sizeof(__pyx_k_P1D), 0, 0, 1, 1},
    {&__pyx_n_s_P2D, __pyx_k_P2D, sizeof(__pyx_k_P2D), 0, 0, 1, 1},
    {&__pyx_n_s_Point, __pyx_k_Point, sizeof(__pyx_k_Point), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D, __pyx_k_Point1D, sizeof(__pyx_k_Point1D), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D___reduce_cython, __pyx_k_Point1D___reduce_cython, sizeof(__pyx_k_Point1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D___setstate_cython, __pyx_k_Point1D___setstate_cython, sizeof(__pyx_k_Point1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_copy, __pyx_k_Point1D_copy, sizeof(__pyx_k_Point1D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_scaleX, __pyx_k_Point1D_scaleX, sizeof(__pyx_k_Point1D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_setX, __pyx_k_Point1D_setX, sizeof(__pyx_k_Point1D_setX), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_setXErrs, __pyx_k_Point1D_setXErrs, sizeof(__pyx_k_Point1D_setXErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_setYErrs, __pyx_k_Point1D_setYErrs, sizeof(__pyx_k_Point1D_setYErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_x, __pyx_k_Point1D_x, sizeof(__pyx_k_Point1D_x), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xErrAvg, __pyx_k_Point1D_xErrAvg, sizeof(__pyx_k_Point1D_xErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xErrs, __pyx_k_Point1D_xErrs, sizeof(__pyx_k_Point1D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xErrsFromSource, __pyx_k_Point1D_xErrsFromSource, sizeof(__pyx_k_Point1D_xErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xMax, __pyx_k_Point1D_xMax, sizeof(__pyx_k_Point1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point1D_xMin, __pyx_k_Point1D_xMin, sizeof(__pyx_k_Point1D_xMin), 0, 0, 1, 1},
    {&__pyx_kp_s_Point1D_x_g, __pyx_k_Point1D_x_g, sizeof(__pyx_k_Point1D_x_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point2D, __pyx_k_Point2D, sizeof(__pyx_k_Point2D), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___reduce_cython, __pyx_k_Point2D___reduce_cython, sizeof(__pyx_k_Point2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D___setstate_cython, __pyx_k_Point2D___setstate_cython, sizeof(__pyx_k_Point2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_copy, __pyx_k_Point2D_copy, sizeof(__pyx_k_Point2D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_scale, __pyx_k_Point2D_scale, sizeof(__pyx_k_Point2D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_scaleX, __pyx_k_Point2D_scaleX, sizeof(__pyx_k_Point2D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_scaleXY, __pyx_k_Point2D_scaleXY, sizeof(__pyx_k_Point2D_scaleXY), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_scaleY, __pyx_k_Point2D_scaleY, sizeof(__pyx_k_Point2D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_setX, __pyx_k_Point2D_setX, sizeof(__pyx_k_Point2D_setX), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_setXErrs, __pyx_k_Point2D_setXErrs, sizeof(__pyx_k_Point2D_setXErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_setY, __pyx_k_Point2D_setY, sizeof(__pyx_k_Point2D_setY), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_setYErrs, __pyx_k_Point2D_setYErrs, sizeof(__pyx_k_Point2D_setYErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_x, __pyx_k_Point2D_x, sizeof(__pyx_k_Point2D_x), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_xErrAvg, __pyx_k_Point2D_xErrAvg, sizeof(__pyx_k_Point2D_xErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_xErrs, __pyx_k_Point2D_xErrs, sizeof(__pyx_k_Point2D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_xMax, __pyx_k_Point2D_xMax, sizeof(__pyx_k_Point2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_xMin, __pyx_k_Point2D_xMin, sizeof(__pyx_k_Point2D_xMin), 0, 0, 1, 1},
    {&__pyx_kp_s_Point2D_x_g_y_g, __pyx_k_Point2D_x_g_y_g, sizeof(__pyx_k_Point2D_x_g_y_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point2D_y, __pyx_k_Point2D_y, sizeof(__pyx_k_Point2D_y), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yErrAvg, __pyx_k_Point2D_yErrAvg, sizeof(__pyx_k_Point2D_yErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yErrs, __pyx_k_Point2D_yErrs, sizeof(__pyx_k_Point2D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yErrsFromSource, __pyx_k_Point2D_yErrsFromSource, sizeof(__pyx_k_Point2D_yErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yMax, __pyx_k_Point2D_yMax, sizeof(__pyx_k_Point2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point2D_yMin, __pyx_k_Point2D_yMin, sizeof(__pyx_k_Point2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D, __pyx_k_Point3D, sizeof(__pyx_k_Point3D), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D___reduce_cython, __pyx_k_Point3D___reduce_cython, sizeof(__pyx_k_Point3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D___setstate_cython, __pyx_k_Point3D___setstate_cython, sizeof(__pyx_k_Point3D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_copy, __pyx_k_Point3D_copy, sizeof(__pyx_k_Point3D_copy), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_scaleX, __pyx_k_Point3D_scaleX, sizeof(__pyx_k_Point3D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_scaleXYZ, __pyx_k_Point3D_scaleXYZ, sizeof(__pyx_k_Point3D_scaleXYZ), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_scaleY, __pyx_k_Point3D_scaleY, sizeof(__pyx_k_Point3D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_scaleZ, __pyx_k_Point3D_scaleZ, sizeof(__pyx_k_Point3D_scaleZ), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setX, __pyx_k_Point3D_setX, sizeof(__pyx_k_Point3D_setX), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setXErrs, __pyx_k_Point3D_setXErrs, sizeof(__pyx_k_Point3D_setXErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setY, __pyx_k_Point3D_setY, sizeof(__pyx_k_Point3D_setY), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setYErrs, __pyx_k_Point3D_setYErrs, sizeof(__pyx_k_Point3D_setYErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setZ, __pyx_k_Point3D_setZ, sizeof(__pyx_k_Point3D_setZ), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_setZErrs, __pyx_k_Point3D_setZErrs, sizeof(__pyx_k_Point3D_setZErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_x, __pyx_k_Point3D_x, sizeof(__pyx_k_Point3D_x), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_xErrAvg, __pyx_k_Point3D_xErrAvg, sizeof(__pyx_k_Point3D_xErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_xErrs, __pyx_k_Point3D_xErrs, sizeof(__pyx_k_Point3D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_xMax, __pyx_k_Point3D_xMax, sizeof(__pyx_k_Point3D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_xMin, __pyx_k_Point3D_xMin, sizeof(__pyx_k_Point3D_xMin), 0, 0, 1, 1},
    {&__pyx_kp_s_Point3D_x_g_y_g_z_g, __pyx_k_Point3D_x_g_y_g_z_g, sizeof(__pyx_k_Point3D_x_g_y_g_z_g), 0, 0, 1, 0},
    {&__pyx_n_s_Point3D_y, __pyx_k_Point3D_y, sizeof(__pyx_k_Point3D_y), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_yErrAvg, __pyx_k_Point3D_yErrAvg, sizeof(__pyx_k_Point3D_yErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_yErrs, __pyx_k_Point3D_yErrs, sizeof(__pyx_k_Point3D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_yMax, __pyx_k_Point3D_yMax, sizeof(__pyx_k_Point3D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_yMin, __pyx_k_Point3D_yMin, sizeof(__pyx_k_Point3D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_z, __pyx_k_Point3D_z, sizeof(__pyx_k_Point3D_z), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zErrAvg, __pyx_k_Point3D_zErrAvg, sizeof(__pyx_k_Point3D_zErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zErrs, __pyx_k_Point3D_zErrs, sizeof(__pyx_k_Point3D_zErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zErrsFromSource, __pyx_k_Point3D_zErrsFromSource, sizeof(__pyx_k_Point3D_zErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zMax, __pyx_k_Point3D_zMax, sizeof(__pyx_k_Point3D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_Point3D_zMin, __pyx_k_Point3D_zMin, sizeof(__pyx_k_Point3D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_Point___reduce_cython, __pyx_k_Point___reduce_cython, sizeof(__pyx_k_Point___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point___setstate_cython, __pyx_k_Point___setstate_cython, sizeof(__pyx_k_Point___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Point_dim, __pyx_k_Point_dim, sizeof(__pyx_k_Point_dim), 0, 0, 1, 1},
    {&__pyx_n_s_Point_errAvg, __pyx_k_Point_errAvg, sizeof(__pyx_k_Point_errAvg), 0, 0, 1, 1},
    {&__pyx_n_s_Point_errMap, __pyx_k_Point_errMap, sizeof(__pyx_k_Point_errMap), 0, 0, 1, 1},
    {&__pyx_n_s_Point_errMinus, __pyx_k_Point_errMinus, sizeof(__pyx_k_Point_errMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point_errPlus, __pyx_k_Point_errPlus, sizeof(__pyx_k_Point_errPlus), 0, 0, 1, 1},
    {&__pyx_n_s_Point_errs, __pyx_k_Point_errs, sizeof(__pyx_k_Point_errs), 0, 0, 1, 1},
    {&__pyx_n_s_Point_rmVariations, __pyx_k_Point_rmVariations, sizeof(__pyx_k_Point_rmVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Point_scale, __pyx_k_Point_scale, sizeof(__pyx_k_Point_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Point_set, __pyx_k_Point_set, sizeof(__pyx_k_Point_set), 0, 0, 1, 1},
    {&__pyx_n_s_Point_setErr, __pyx_k_Point_setErr, sizeof(__pyx_k_Point_setErr), 0, 0, 1, 1},
    {&__pyx_n_s_Point_setErrMinus, __pyx_k_Point_setErrMinus, sizeof(__pyx_k_Point_setErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_Point_setErrPlus, __pyx_k_Point_setErrPlus, sizeof(__pyx_k_Point_setErrPlus), 0, 0, 1, 1},
    {&__pyx_n_s_Point_setErrs, __pyx_k_Point_setErrs, sizeof(__pyx_k_Point_setErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Point_setVal, __pyx_k_Point_setVal, sizeof(__pyx_k_Point_setVal), 0, 0, 1, 1},
    {&__pyx_n_s_Point_val, __pyx_k_Point_val, sizeof(__pyx_k_Point_val), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D, __pyx_k_Profile1D, sizeof(__pyx_k_Profile1D), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D___init2, __pyx_k_Profile1D___init2, sizeof(__pyx_k_Profile1D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D___init3, __pyx_k_Profile1D___init3, sizeof(__pyx_k_Profile1D___init3), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D___init5, __pyx_k_Profile1D___init5, sizeof(__pyx_k_Profile1D___init5), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D___reduce_cython, __pyx_k_Profile1D___reduce_cython, sizeof(__pyx_k_Profile1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D___setstate_cython, __pyx_k_Profile1D___setstate_cython, sizeof(__pyx_k_Profile1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D__init2, __pyx_k_Profile1D__init2, sizeof(__pyx_k_Profile1D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D__init3, __pyx_k_Profile1D__init3, sizeof(__pyx_k_Profile1D__init3), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D__init3_locals_genexpr, __pyx_k_Profile1D__init3_locals_genexpr, sizeof(__pyx_k_Profile1D__init3_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D__init5, __pyx_k_Profile1D__init5, sizeof(__pyx_k_Profile1D__init5), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D__mknp, __pyx_k_Profile1D__mknp, sizeof(__pyx_k_Profile1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_addBin, __pyx_k_Profile1D_addBin, sizeof(__pyx_k_Profile1D_addBin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_addBins, __pyx_k_Profile1D_addBins, sizeof(__pyx_k_Profile1D_addBins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_bin, __pyx_k_Profile1D_bin, sizeof(__pyx_k_Profile1D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_binAt, __pyx_k_Profile1D_binAt, sizeof(__pyx_k_Profile1D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_binIndexAt, __pyx_k_Profile1D_binIndexAt, sizeof(__pyx_k_Profile1D_binIndexAt), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_bins, __pyx_k_Profile1D_bins, sizeof(__pyx_k_Profile1D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_clone, __pyx_k_Profile1D_clone, sizeof(__pyx_k_Profile1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_divideBy, __pyx_k_Profile1D_divideBy, sizeof(__pyx_k_Profile1D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_effNumEntries, __pyx_k_Profile1D_effNumEntries, sizeof(__pyx_k_Profile1D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_fill, __pyx_k_Profile1D_fill, sizeof(__pyx_k_Profile1D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_fillBin, __pyx_k_Profile1D_fillBin, sizeof(__pyx_k_Profile1D_fillBin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_mergeBins, __pyx_k_Profile1D_mergeBins, sizeof(__pyx_k_Profile1D_mergeBins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_mkScatter, __pyx_k_Profile1D_mkScatter, sizeof(__pyx_k_Profile1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_numBins, __pyx_k_Profile1D_numBins, sizeof(__pyx_k_Profile1D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_numBinsX, __pyx_k_Profile1D_numBinsX, sizeof(__pyx_k_Profile1D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_numEntries, __pyx_k_Profile1D_numEntries, sizeof(__pyx_k_Profile1D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_overflow, __pyx_k_Profile1D_overflow, sizeof(__pyx_k_Profile1D_overflow), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_rebin, __pyx_k_Profile1D_rebin, sizeof(__pyx_k_Profile1D_rebin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_rebinBy, __pyx_k_Profile1D_rebinBy, sizeof(__pyx_k_Profile1D_rebinBy), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_rebinTo, __pyx_k_Profile1D_rebinTo, sizeof(__pyx_k_Profile1D_rebinTo), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_reset, __pyx_k_Profile1D_reset, sizeof(__pyx_k_Profile1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_scaleW, __pyx_k_Profile1D_scaleW, sizeof(__pyx_k_Profile1D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_scaleY, __pyx_k_Profile1D_scaleY, sizeof(__pyx_k_Profile1D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_sumW, __pyx_k_Profile1D_sumW, sizeof(__pyx_k_Profile1D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_sumW2, __pyx_k_Profile1D_sumW2, sizeof(__pyx_k_Profile1D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_sumWs, __pyx_k_Profile1D_sumWs, sizeof(__pyx_k_Profile1D_sumWs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_totalDbn, __pyx_k_Profile1D_totalDbn, sizeof(__pyx_k_Profile1D_totalDbn), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_underflow, __pyx_k_Profile1D_underflow, sizeof(__pyx_k_Profile1D_underflow), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xEdges, __pyx_k_Profile1D_xEdges, sizeof(__pyx_k_Profile1D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xErrs, __pyx_k_Profile1D_xErrs, sizeof(__pyx_k_Profile1D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xFoci, __pyx_k_Profile1D_xFoci, sizeof(__pyx_k_Profile1D_xFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMax, __pyx_k_Profile1D_xMax, sizeof(__pyx_k_Profile1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMaxs, __pyx_k_Profile1D_xMaxs, sizeof(__pyx_k_Profile1D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMean, __pyx_k_Profile1D_xMean, sizeof(__pyx_k_Profile1D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMids, __pyx_k_Profile1D_xMids, sizeof(__pyx_k_Profile1D_xMids), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMin, __pyx_k_Profile1D_xMin, sizeof(__pyx_k_Profile1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xMins, __pyx_k_Profile1D_xMins, sizeof(__pyx_k_Profile1D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xRMS, __pyx_k_Profile1D_xRMS, sizeof(__pyx_k_Profile1D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xStdDev, __pyx_k_Profile1D_xStdDev, sizeof(__pyx_k_Profile1D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xStdErr, __pyx_k_Profile1D_xStdErr, sizeof(__pyx_k_Profile1D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xVals, __pyx_k_Profile1D_xVals, sizeof(__pyx_k_Profile1D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xVariance, __pyx_k_Profile1D_xVariance, sizeof(__pyx_k_Profile1D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_xWidths, __pyx_k_Profile1D_xWidths, sizeof(__pyx_k_Profile1D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yErrs, __pyx_k_Profile1D_yErrs, sizeof(__pyx_k_Profile1D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yMax, __pyx_k_Profile1D_yMax, sizeof(__pyx_k_Profile1D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yMaxs, __pyx_k_Profile1D_yMaxs, sizeof(__pyx_k_Profile1D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yMeans, __pyx_k_Profile1D_yMeans, sizeof(__pyx_k_Profile1D_yMeans), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yMin, __pyx_k_Profile1D_yMin, sizeof(__pyx_k_Profile1D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yMins, __pyx_k_Profile1D_yMins, sizeof(__pyx_k_Profile1D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yStdDevs, __pyx_k_Profile1D_yStdDevs, sizeof(__pyx_k_Profile1D_yStdDevs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yStdErrs, __pyx_k_Profile1D_yStdErrs, sizeof(__pyx_k_Profile1D_yStdErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile1D_yVals, __pyx_k_Profile1D_yVals, sizeof(__pyx_k_Profile1D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D, __pyx_k_Profile2D, sizeof(__pyx_k_Profile2D), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D___init2, __pyx_k_Profile2D___init2, sizeof(__pyx_k_Profile2D___init2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D___init4, __pyx_k_Profile2D___init4, sizeof(__pyx_k_Profile2D___init4), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D___init8, __pyx_k_Profile2D___init8, sizeof(__pyx_k_Profile2D___init8), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D___reduce_cython, __pyx_k_Profile2D___reduce_cython, sizeof(__pyx_k_Profile2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D___setstate_cython, __pyx_k_Profile2D___setstate_cython, sizeof(__pyx_k_Profile2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D__init2, __pyx_k_Profile2D__init2, sizeof(__pyx_k_Profile2D__init2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D__init4, __pyx_k_Profile2D__init4, sizeof(__pyx_k_Profile2D__init4), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D__init8, __pyx_k_Profile2D__init8, sizeof(__pyx_k_Profile2D__init8), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D__mknp, __pyx_k_Profile2D__mknp, sizeof(__pyx_k_Profile2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_addBin, __pyx_k_Profile2D_addBin, sizeof(__pyx_k_Profile2D_addBin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_addBins, __pyx_k_Profile2D_addBins, sizeof(__pyx_k_Profile2D_addBins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_bin, __pyx_k_Profile2D_bin, sizeof(__pyx_k_Profile2D_bin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_binAt, __pyx_k_Profile2D_binAt, sizeof(__pyx_k_Profile2D_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_binIndexAt, __pyx_k_Profile2D_binIndexAt, sizeof(__pyx_k_Profile2D_binIndexAt), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_bins, __pyx_k_Profile2D_bins, sizeof(__pyx_k_Profile2D_bins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_clone, __pyx_k_Profile2D_clone, sizeof(__pyx_k_Profile2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_divideBy, __pyx_k_Profile2D_divideBy, sizeof(__pyx_k_Profile2D_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_effNumEntries, __pyx_k_Profile2D_effNumEntries, sizeof(__pyx_k_Profile2D_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_fill, __pyx_k_Profile2D_fill, sizeof(__pyx_k_Profile2D_fill), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_fillBin, __pyx_k_Profile2D_fillBin, sizeof(__pyx_k_Profile2D_fillBin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_mkScatter, __pyx_k_Profile2D_mkScatter, sizeof(__pyx_k_Profile2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_numBins, __pyx_k_Profile2D_numBins, sizeof(__pyx_k_Profile2D_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_numBinsX, __pyx_k_Profile2D_numBinsX, sizeof(__pyx_k_Profile2D_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_numBinsY, __pyx_k_Profile2D_numBinsY, sizeof(__pyx_k_Profile2D_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_numEntries, __pyx_k_Profile2D_numEntries, sizeof(__pyx_k_Profile2D_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_reset, __pyx_k_Profile2D_reset, sizeof(__pyx_k_Profile2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_scaleW, __pyx_k_Profile2D_scaleW, sizeof(__pyx_k_Profile2D_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_scaleZ, __pyx_k_Profile2D_scaleZ, sizeof(__pyx_k_Profile2D_scaleZ), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_sumW, __pyx_k_Profile2D_sumW, sizeof(__pyx_k_Profile2D_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_sumW2, __pyx_k_Profile2D_sumW2, sizeof(__pyx_k_Profile2D_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_sumWs, __pyx_k_Profile2D_sumWs, sizeof(__pyx_k_Profile2D_sumWs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_totalDbn, __pyx_k_Profile2D_totalDbn, sizeof(__pyx_k_Profile2D_totalDbn), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xEdges, __pyx_k_Profile2D_xEdges, sizeof(__pyx_k_Profile2D_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xErrs, __pyx_k_Profile2D_xErrs, sizeof(__pyx_k_Profile2D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xFoci, __pyx_k_Profile2D_xFoci, sizeof(__pyx_k_Profile2D_xFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMax, __pyx_k_Profile2D_xMax, sizeof(__pyx_k_Profile2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMaxs, __pyx_k_Profile2D_xMaxs, sizeof(__pyx_k_Profile2D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMean, __pyx_k_Profile2D_xMean, sizeof(__pyx_k_Profile2D_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMids, __pyx_k_Profile2D_xMids, sizeof(__pyx_k_Profile2D_xMids), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMin, __pyx_k_Profile2D_xMin, sizeof(__pyx_k_Profile2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xMins, __pyx_k_Profile2D_xMins, sizeof(__pyx_k_Profile2D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xRMS, __pyx_k_Profile2D_xRMS, sizeof(__pyx_k_Profile2D_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xStdDev, __pyx_k_Profile2D_xStdDev, sizeof(__pyx_k_Profile2D_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xStdErr, __pyx_k_Profile2D_xStdErr, sizeof(__pyx_k_Profile2D_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xVals, __pyx_k_Profile2D_xVals, sizeof(__pyx_k_Profile2D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xVariance, __pyx_k_Profile2D_xVariance, sizeof(__pyx_k_Profile2D_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xWidths, __pyx_k_Profile2D_xWidths, sizeof(__pyx_k_Profile2D_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xyMean, __pyx_k_Profile2D_xyMean, sizeof(__pyx_k_Profile2D_xyMean), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xyRMS, __pyx_k_Profile2D_xyRMS, sizeof(__pyx_k_Profile2D_xyRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xyStdDev, __pyx_k_Profile2D_xyStdDev, sizeof(__pyx_k_Profile2D_xyStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xyStdErr, __pyx_k_Profile2D_xyStdErr, sizeof(__pyx_k_Profile2D_xyStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_xyVariance, __pyx_k_Profile2D_xyVariance, sizeof(__pyx_k_Profile2D_xyVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yEdges, __pyx_k_Profile2D_yEdges, sizeof(__pyx_k_Profile2D_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yErrs, __pyx_k_Profile2D_yErrs, sizeof(__pyx_k_Profile2D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yFoci, __pyx_k_Profile2D_yFoci, sizeof(__pyx_k_Profile2D_yFoci), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMax, __pyx_k_Profile2D_yMax, sizeof(__pyx_k_Profile2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMaxs, __pyx_k_Profile2D_yMaxs, sizeof(__pyx_k_Profile2D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMean, __pyx_k_Profile2D_yMean, sizeof(__pyx_k_Profile2D_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMids, __pyx_k_Profile2D_yMids, sizeof(__pyx_k_Profile2D_yMids), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMin, __pyx_k_Profile2D_yMin, sizeof(__pyx_k_Profile2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yMins, __pyx_k_Profile2D_yMins, sizeof(__pyx_k_Profile2D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yRMS, __pyx_k_Profile2D_yRMS, sizeof(__pyx_k_Profile2D_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yStdDev, __pyx_k_Profile2D_yStdDev, sizeof(__pyx_k_Profile2D_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yStdErr, __pyx_k_Profile2D_yStdErr, sizeof(__pyx_k_Profile2D_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yVals, __pyx_k_Profile2D_yVals, sizeof(__pyx_k_Profile2D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yVariance, __pyx_k_Profile2D_yVariance, sizeof(__pyx_k_Profile2D_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_yWidths, __pyx_k_Profile2D_yWidths, sizeof(__pyx_k_Profile2D_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zErrs, __pyx_k_Profile2D_zErrs, sizeof(__pyx_k_Profile2D_zErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zMax, __pyx_k_Profile2D_zMax, sizeof(__pyx_k_Profile2D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zMaxs, __pyx_k_Profile2D_zMaxs, sizeof(__pyx_k_Profile2D_zMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zMeans, __pyx_k_Profile2D_zMeans, sizeof(__pyx_k_Profile2D_zMeans), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zMin, __pyx_k_Profile2D_zMin, sizeof(__pyx_k_Profile2D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zMins, __pyx_k_Profile2D_zMins, sizeof(__pyx_k_Profile2D_zMins), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zStdDevs, __pyx_k_Profile2D_zStdDevs, sizeof(__pyx_k_Profile2D_zStdDevs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zStdErrs, __pyx_k_Profile2D_zStdErrs, sizeof(__pyx_k_Profile2D_zStdErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Profile2D_zVals, __pyx_k_Profile2D_zVals, sizeof(__pyx_k_Profile2D_zVals), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D, __pyx_k_ProfileBin1D, sizeof(__pyx_k_ProfileBin1D), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D___reduce_cython, __pyx_k_ProfileBin1D___reduce_cython, sizeof(__pyx_k_ProfileBin1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D___setstate_cython, __pyx_k_ProfileBin1D___setstate_cython, sizeof(__pyx_k_ProfileBin1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_kp_s_ProfileBin1D_g_g_sumw_g, __pyx_k_ProfileBin1D_g_g_sumw_g, sizeof(__pyx_k_ProfileBin1D_g_g_sumw_g), 0, 0, 1, 0},
    {&__pyx_n_s_ProfileBin1D_mean, __pyx_k_ProfileBin1D_mean, sizeof(__pyx_k_ProfileBin1D_mean), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_rms, __pyx_k_ProfileBin1D_rms, sizeof(__pyx_k_ProfileBin1D_rms), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_stdDev, __pyx_k_ProfileBin1D_stdDev, sizeof(__pyx_k_ProfileBin1D_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_stdErr, __pyx_k_ProfileBin1D_stdErr, sizeof(__pyx_k_ProfileBin1D_stdErr), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_sumWY, __pyx_k_ProfileBin1D_sumWY, sizeof(__pyx_k_ProfileBin1D_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_sumWY2, __pyx_k_ProfileBin1D_sumWY2, sizeof(__pyx_k_ProfileBin1D_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin1D_variance, __pyx_k_ProfileBin1D_variance, sizeof(__pyx_k_ProfileBin1D_variance), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D, __pyx_k_ProfileBin2D, sizeof(__pyx_k_ProfileBin2D), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D___reduce_cython, __pyx_k_ProfileBin2D___reduce_cython, sizeof(__pyx_k_ProfileBin2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D___setstate_cython, __pyx_k_ProfileBin2D___setstate_cython, sizeof(__pyx_k_ProfileBin2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_kp_s_ProfileBin2D_g_g_g_g, __pyx_k_ProfileBin2D_g_g_g_g, sizeof(__pyx_k_ProfileBin2D_g_g_g_g), 0, 0, 1, 0},
    {&__pyx_n_s_ProfileBin2D_mean, __pyx_k_ProfileBin2D_mean, sizeof(__pyx_k_ProfileBin2D_mean), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_rms, __pyx_k_ProfileBin2D_rms, sizeof(__pyx_k_ProfileBin2D_rms), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_stdDev, __pyx_k_ProfileBin2D_stdDev, sizeof(__pyx_k_ProfileBin2D_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_stdErr, __pyx_k_ProfileBin2D_stdErr, sizeof(__pyx_k_ProfileBin2D_stdErr), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_sumWZ, __pyx_k_ProfileBin2D_sumWZ, sizeof(__pyx_k_ProfileBin2D_sumWZ), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_sumWZ2, __pyx_k_ProfileBin2D_sumWZ2, sizeof(__pyx_k_ProfileBin2D_sumWZ2), 0, 0, 1, 1},
    {&__pyx_n_s_ProfileBin2D_variance, __pyx_k_ProfileBin2D_variance, sizeof(__pyx_k_ProfileBin2D_variance), 0, 0, 1, 1},
    {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
    {&__pyx_n_s_S1D, __pyx_k_S1D, sizeof(__pyx_k_S1D), 0, 0, 1, 1},
    {&__pyx_n_s_S2D, __pyx_k_S2D, sizeof(__pyx_k_S2D), 0, 0, 1, 1},
    {&__pyx_n_s_S3D, __pyx_k_S3D, sizeof(__pyx_k_S3D), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D, __pyx_k_Scatter1D, sizeof(__pyx_k_Scatter1D), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___addPoint_explicit, __pyx_k_Scatter1D___addPoint_explicit, sizeof(__pyx_k_Scatter1D___addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___addPoint_point, __pyx_k_Scatter1D___addPoint_point, sizeof(__pyx_k_Scatter1D___addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___init_2, __pyx_k_Scatter1D___init_2, sizeof(__pyx_k_Scatter1D___init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___init_3, __pyx_k_Scatter1D___init_3, sizeof(__pyx_k_Scatter1D___init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___reduce_cython, __pyx_k_Scatter1D___reduce_cython, sizeof(__pyx_k_Scatter1D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D___setstate_cython, __pyx_k_Scatter1D___setstate_cython, sizeof(__pyx_k_Scatter1D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D__addPoint_explicit, __pyx_k_Scatter1D__addPoint_explicit, sizeof(__pyx_k_Scatter1D__addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D__addPoint_point, __pyx_k_Scatter1D__addPoint_point, sizeof(__pyx_k_Scatter1D__addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D__init_2, __pyx_k_Scatter1D__init_2, sizeof(__pyx_k_Scatter1D__init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D__init_3, __pyx_k_Scatter1D__init_3, sizeof(__pyx_k_Scatter1D__init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D__mknp, __pyx_k_Scatter1D__mknp, sizeof(__pyx_k_Scatter1D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_addPoint, __pyx_k_Scatter1D_addPoint, sizeof(__pyx_k_Scatter1D_addPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_addPoints, __pyx_k_Scatter1D_addPoints, sizeof(__pyx_k_Scatter1D_addPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_clone, __pyx_k_Scatter1D_clone, sizeof(__pyx_k_Scatter1D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_combineWith, __pyx_k_Scatter1D_combineWith, sizeof(__pyx_k_Scatter1D_combineWith), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_hasValidErrorBreakdown, __pyx_k_Scatter1D_hasValidErrorBreakdown, sizeof(__pyx_k_Scatter1D_hasValidErrorBreakdown), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_mkScatter, __pyx_k_Scatter1D_mkScatter, sizeof(__pyx_k_Scatter1D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_numPoints, __pyx_k_Scatter1D_numPoints, sizeof(__pyx_k_Scatter1D_numPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_parseVariations, __pyx_k_Scatter1D_parseVariations, sizeof(__pyx_k_Scatter1D_parseVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_point, __pyx_k_Scatter1D_point, sizeof(__pyx_k_Scatter1D_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_points, __pyx_k_Scatter1D_points, sizeof(__pyx_k_Scatter1D_points), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_reset, __pyx_k_Scatter1D_reset, sizeof(__pyx_k_Scatter1D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_rmPoint, __pyx_k_Scatter1D_rmPoint, sizeof(__pyx_k_Scatter1D_rmPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_rmPoints, __pyx_k_Scatter1D_rmPoints, sizeof(__pyx_k_Scatter1D_rmPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_rmVariations, __pyx_k_Scatter1D_rmVariations, sizeof(__pyx_k_Scatter1D_rmVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_scale, __pyx_k_Scatter1D_scale, sizeof(__pyx_k_Scatter1D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_scaleX, __pyx_k_Scatter1D_scaleX, sizeof(__pyx_k_Scatter1D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_transformX, __pyx_k_Scatter1D_transformX, sizeof(__pyx_k_Scatter1D_transformX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_updateTotalUncertainty, __pyx_k_Scatter1D_updateTotalUncertainty, sizeof(__pyx_k_Scatter1D_updateTotalUncertainty), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_variations, __pyx_k_Scatter1D_variations, sizeof(__pyx_k_Scatter1D_variations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_writeVariationsToAnnot, __pyx_k_Scatter1D_writeVariationsToAnnot, sizeof(__pyx_k_Scatter1D_writeVariationsToAnnot), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xMax, __pyx_k_Scatter1D_xMax, sizeof(__pyx_k_Scatter1D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xMaxs, __pyx_k_Scatter1D_xMaxs, sizeof(__pyx_k_Scatter1D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xMin, __pyx_k_Scatter1D_xMin, sizeof(__pyx_k_Scatter1D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xMins, __pyx_k_Scatter1D_xMins, sizeof(__pyx_k_Scatter1D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter1D_xVals, __pyx_k_Scatter1D_xVals, sizeof(__pyx_k_Scatter1D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D, __pyx_k_Scatter2D, sizeof(__pyx_k_Scatter2D), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___addPoint_explicit, __pyx_k_Scatter2D___addPoint_explicit, sizeof(__pyx_k_Scatter2D___addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___addPoint_point, __pyx_k_Scatter2D___addPoint_point, sizeof(__pyx_k_Scatter2D___addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___init_2, __pyx_k_Scatter2D___init_2, sizeof(__pyx_k_Scatter2D___init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___init_3, __pyx_k_Scatter2D___init_3, sizeof(__pyx_k_Scatter2D___init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___reduce_cython, __pyx_k_Scatter2D___reduce_cython, sizeof(__pyx_k_Scatter2D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D___setstate_cython, __pyx_k_Scatter2D___setstate_cython, sizeof(__pyx_k_Scatter2D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D__addPoint_explicit, __pyx_k_Scatter2D__addPoint_explicit, sizeof(__pyx_k_Scatter2D__addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D__addPoint_point, __pyx_k_Scatter2D__addPoint_point, sizeof(__pyx_k_Scatter2D__addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D__init_2, __pyx_k_Scatter2D__init_2, sizeof(__pyx_k_Scatter2D__init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D__init_3, __pyx_k_Scatter2D__init_3, sizeof(__pyx_k_Scatter2D__init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D__mknp, __pyx_k_Scatter2D__mknp, sizeof(__pyx_k_Scatter2D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_addPoint, __pyx_k_Scatter2D_addPoint, sizeof(__pyx_k_Scatter2D_addPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_addPoints, __pyx_k_Scatter2D_addPoints, sizeof(__pyx_k_Scatter2D_addPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_clone, __pyx_k_Scatter2D_clone, sizeof(__pyx_k_Scatter2D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_combineWith, __pyx_k_Scatter2D_combineWith, sizeof(__pyx_k_Scatter2D_combineWith), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_correlationMatrix, __pyx_k_Scatter2D_correlationMatrix, sizeof(__pyx_k_Scatter2D_correlationMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_covarianceMatrix, __pyx_k_Scatter2D_covarianceMatrix, sizeof(__pyx_k_Scatter2D_covarianceMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_hasValidErrorBreakdown, __pyx_k_Scatter2D_hasValidErrorBreakdown, sizeof(__pyx_k_Scatter2D_hasValidErrorBreakdown), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_mkScatter, __pyx_k_Scatter2D_mkScatter, sizeof(__pyx_k_Scatter2D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_numPoints, __pyx_k_Scatter2D_numPoints, sizeof(__pyx_k_Scatter2D_numPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_parseVariations, __pyx_k_Scatter2D_parseVariations, sizeof(__pyx_k_Scatter2D_parseVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_point, __pyx_k_Scatter2D_point, sizeof(__pyx_k_Scatter2D_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_points, __pyx_k_Scatter2D_points, sizeof(__pyx_k_Scatter2D_points), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_reset, __pyx_k_Scatter2D_reset, sizeof(__pyx_k_Scatter2D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_rmPoint, __pyx_k_Scatter2D_rmPoint, sizeof(__pyx_k_Scatter2D_rmPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_rmPoints, __pyx_k_Scatter2D_rmPoints, sizeof(__pyx_k_Scatter2D_rmPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_rmVariations, __pyx_k_Scatter2D_rmVariations, sizeof(__pyx_k_Scatter2D_rmVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scale, __pyx_k_Scatter2D_scale, sizeof(__pyx_k_Scatter2D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scaleX, __pyx_k_Scatter2D_scaleX, sizeof(__pyx_k_Scatter2D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scaleXY, __pyx_k_Scatter2D_scaleXY, sizeof(__pyx_k_Scatter2D_scaleXY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_scaleY, __pyx_k_Scatter2D_scaleY, sizeof(__pyx_k_Scatter2D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_transformX, __pyx_k_Scatter2D_transformX, sizeof(__pyx_k_Scatter2D_transformX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_transformY, __pyx_k_Scatter2D_transformY, sizeof(__pyx_k_Scatter2D_transformY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_updateTotalUncertainty, __pyx_k_Scatter2D_updateTotalUncertainty, sizeof(__pyx_k_Scatter2D_updateTotalUncertainty), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_variations, __pyx_k_Scatter2D_variations, sizeof(__pyx_k_Scatter2D_variations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_writeVariationsToAnnot, __pyx_k_Scatter2D_writeVariationsToAnnot, sizeof(__pyx_k_Scatter2D_writeVariationsToAnnot), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xErrAvgs, __pyx_k_Scatter2D_xErrAvgs, sizeof(__pyx_k_Scatter2D_xErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xErrs, __pyx_k_Scatter2D_xErrs, sizeof(__pyx_k_Scatter2D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xMax, __pyx_k_Scatter2D_xMax, sizeof(__pyx_k_Scatter2D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xMaxs, __pyx_k_Scatter2D_xMaxs, sizeof(__pyx_k_Scatter2D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xMin, __pyx_k_Scatter2D_xMin, sizeof(__pyx_k_Scatter2D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xMins, __pyx_k_Scatter2D_xMins, sizeof(__pyx_k_Scatter2D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_xVals, __pyx_k_Scatter2D_xVals, sizeof(__pyx_k_Scatter2D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yErrAvgs, __pyx_k_Scatter2D_yErrAvgs, sizeof(__pyx_k_Scatter2D_yErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yErrs, __pyx_k_Scatter2D_yErrs, sizeof(__pyx_k_Scatter2D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yMax, __pyx_k_Scatter2D_yMax, sizeof(__pyx_k_Scatter2D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yMaxs, __pyx_k_Scatter2D_yMaxs, sizeof(__pyx_k_Scatter2D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yMin, __pyx_k_Scatter2D_yMin, sizeof(__pyx_k_Scatter2D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yMins, __pyx_k_Scatter2D_yMins, sizeof(__pyx_k_Scatter2D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter2D_yVals, __pyx_k_Scatter2D_yVals, sizeof(__pyx_k_Scatter2D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D, __pyx_k_Scatter3D, sizeof(__pyx_k_Scatter3D), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___addPoint_explicit, __pyx_k_Scatter3D___addPoint_explicit, sizeof(__pyx_k_Scatter3D___addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___addPoint_point, __pyx_k_Scatter3D___addPoint_point, sizeof(__pyx_k_Scatter3D___addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___init_2, __pyx_k_Scatter3D___init_2, sizeof(__pyx_k_Scatter3D___init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___init_3, __pyx_k_Scatter3D___init_3, sizeof(__pyx_k_Scatter3D___init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___reduce_cython, __pyx_k_Scatter3D___reduce_cython, sizeof(__pyx_k_Scatter3D___reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D___setstate_cython, __pyx_k_Scatter3D___setstate_cython, sizeof(__pyx_k_Scatter3D___setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D__addPoint_explicit, __pyx_k_Scatter3D__addPoint_explicit, sizeof(__pyx_k_Scatter3D__addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D__addPoint_point, __pyx_k_Scatter3D__addPoint_point, sizeof(__pyx_k_Scatter3D__addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D__init_2, __pyx_k_Scatter3D__init_2, sizeof(__pyx_k_Scatter3D__init_2), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D__init_3, __pyx_k_Scatter3D__init_3, sizeof(__pyx_k_Scatter3D__init_3), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D__mknp, __pyx_k_Scatter3D__mknp, sizeof(__pyx_k_Scatter3D__mknp), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_addPoint, __pyx_k_Scatter3D_addPoint, sizeof(__pyx_k_Scatter3D_addPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_addPoints, __pyx_k_Scatter3D_addPoints, sizeof(__pyx_k_Scatter3D_addPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_clone, __pyx_k_Scatter3D_clone, sizeof(__pyx_k_Scatter3D_clone), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_combineWith, __pyx_k_Scatter3D_combineWith, sizeof(__pyx_k_Scatter3D_combineWith), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_covarianceMatrix, __pyx_k_Scatter3D_covarianceMatrix, sizeof(__pyx_k_Scatter3D_covarianceMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_hasValidErrorBreakdown, __pyx_k_Scatter3D_hasValidErrorBreakdown, sizeof(__pyx_k_Scatter3D_hasValidErrorBreakdown), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_mkScatter, __pyx_k_Scatter3D_mkScatter, sizeof(__pyx_k_Scatter3D_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_numPoints, __pyx_k_Scatter3D_numPoints, sizeof(__pyx_k_Scatter3D_numPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_point, __pyx_k_Scatter3D_point, sizeof(__pyx_k_Scatter3D_point), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_points, __pyx_k_Scatter3D_points, sizeof(__pyx_k_Scatter3D_points), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_reset, __pyx_k_Scatter3D_reset, sizeof(__pyx_k_Scatter3D_reset), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_rmPoint, __pyx_k_Scatter3D_rmPoint, sizeof(__pyx_k_Scatter3D_rmPoint), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_rmPoints, __pyx_k_Scatter3D_rmPoints, sizeof(__pyx_k_Scatter3D_rmPoints), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_rmVariations, __pyx_k_Scatter3D_rmVariations, sizeof(__pyx_k_Scatter3D_rmVariations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scale, __pyx_k_Scatter3D_scale, sizeof(__pyx_k_Scatter3D_scale), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleX, __pyx_k_Scatter3D_scaleX, sizeof(__pyx_k_Scatter3D_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleXYZ, __pyx_k_Scatter3D_scaleXYZ, sizeof(__pyx_k_Scatter3D_scaleXYZ), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleY, __pyx_k_Scatter3D_scaleY, sizeof(__pyx_k_Scatter3D_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_scaleZ, __pyx_k_Scatter3D_scaleZ, sizeof(__pyx_k_Scatter3D_scaleZ), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_transformX, __pyx_k_Scatter3D_transformX, sizeof(__pyx_k_Scatter3D_transformX), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_transformY, __pyx_k_Scatter3D_transformY, sizeof(__pyx_k_Scatter3D_transformY), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_transformZ, __pyx_k_Scatter3D_transformZ, sizeof(__pyx_k_Scatter3D_transformZ), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_updateTotalUncertainty, __pyx_k_Scatter3D_updateTotalUncertainty, sizeof(__pyx_k_Scatter3D_updateTotalUncertainty), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_variations, __pyx_k_Scatter3D_variations, sizeof(__pyx_k_Scatter3D_variations), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_writeVariationsToAnnot, __pyx_k_Scatter3D_writeVariationsToAnnot, sizeof(__pyx_k_Scatter3D_writeVariationsToAnnot), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xErrs, __pyx_k_Scatter3D_xErrs, sizeof(__pyx_k_Scatter3D_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xMax, __pyx_k_Scatter3D_xMax, sizeof(__pyx_k_Scatter3D_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xMaxs, __pyx_k_Scatter3D_xMaxs, sizeof(__pyx_k_Scatter3D_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xMin, __pyx_k_Scatter3D_xMin, sizeof(__pyx_k_Scatter3D_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xMins, __pyx_k_Scatter3D_xMins, sizeof(__pyx_k_Scatter3D_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_xVals, __pyx_k_Scatter3D_xVals, sizeof(__pyx_k_Scatter3D_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yErrs, __pyx_k_Scatter3D_yErrs, sizeof(__pyx_k_Scatter3D_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yMax, __pyx_k_Scatter3D_yMax, sizeof(__pyx_k_Scatter3D_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yMaxs, __pyx_k_Scatter3D_yMaxs, sizeof(__pyx_k_Scatter3D_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yMin, __pyx_k_Scatter3D_yMin, sizeof(__pyx_k_Scatter3D_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yMins, __pyx_k_Scatter3D_yMins, sizeof(__pyx_k_Scatter3D_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_yVals, __pyx_k_Scatter3D_yVals, sizeof(__pyx_k_Scatter3D_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zErrs, __pyx_k_Scatter3D_zErrs, sizeof(__pyx_k_Scatter3D_zErrs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zMax, __pyx_k_Scatter3D_zMax, sizeof(__pyx_k_Scatter3D_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zMaxs, __pyx_k_Scatter3D_zMaxs, sizeof(__pyx_k_Scatter3D_zMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zMin, __pyx_k_Scatter3D_zMin, sizeof(__pyx_k_Scatter3D_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zMins, __pyx_k_Scatter3D_zMins, sizeof(__pyx_k_Scatter3D_zMins), 0, 0, 1, 1},
    {&__pyx_n_s_Scatter3D_zVals, __pyx_k_Scatter3D_zVals, sizeof(__pyx_k_Scatter3D_zVals), 0, 0, 1, 1},
    {&__pyx_n_s_StringIO, __pyx_k_StringIO, sizeof(__pyx_k_StringIO), 0, 0, 1, 1},
    {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
    {&__pyx_kp_s_Unsupported_bin_of_type, __pyx_k_Unsupported_bin_of_type, sizeof(__pyx_k_Unsupported_bin_of_type), 0, 0, 1, 0},
    {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
    {&__pyx_n_s_XY, __pyx_k_XY, sizeof(__pyx_k_XY), 0, 0, 1, 1},
    {&__pyx_n_s_XYZ, __pyx_k_XYZ, sizeof(__pyx_k_XYZ), 0, 0, 1, 1},
    {&__pyx_kp_s__11, __pyx_k__11, sizeof(__pyx_k__11), 0, 0, 1, 0},
    {&__pyx_kp_b__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 0, 0},
    {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
    {&__pyx_kp_u__3, __pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0, 0},
    {&__pyx_n_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 1},
    {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0},
    {&__pyx_n_s__977, __pyx_k__977, sizeof(__pyx_k__977), 0, 0, 1, 1},
    {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
    {&__pyx_n_s_addBin, __pyx_k_addBin, sizeof(__pyx_k_addBin), 0, 0, 1, 1},
    {&__pyx_n_s_addBins, __pyx_k_addBins, sizeof(__pyx_k_addBins), 0, 0, 1, 1},
    {&__pyx_n_s_addBins_bins, __pyx_k_addBins_bins, sizeof(__pyx_k_addBins_bins), 0, 0, 1, 1},
    {&__pyx_n_s_addBins_edges, __pyx_k_addBins_edges, sizeof(__pyx_k_addBins_edges), 0, 0, 1, 1},
    {&__pyx_n_s_addBins_points, __pyx_k_addBins_points, sizeof(__pyx_k_addBins_points), 0, 0, 1, 1},
    {&__pyx_n_s_addBins_tuples, __pyx_k_addBins_tuples, sizeof(__pyx_k_addBins_tuples), 0, 0, 1, 1},
    {&__pyx_n_s_addPoint, __pyx_k_addPoint, sizeof(__pyx_k_addPoint), 0, 0, 1, 1},
    {&__pyx_n_s_addPoint_explicit, __pyx_k_addPoint_explicit, sizeof(__pyx_k_addPoint_explicit), 0, 0, 1, 1},
    {&__pyx_n_s_addPoint_point, __pyx_k_addPoint_point, sizeof(__pyx_k_addPoint_point), 0, 0, 1, 1},
    {&__pyx_n_s_addPoints, __pyx_k_addPoints, sizeof(__pyx_k_addPoints), 0, 0, 1, 1},
    {&__pyx_n_s_addressof, __pyx_k_addressof, sizeof(__pyx_k_addressof), 0, 0, 1, 1},
    {&__pyx_n_s_adjacentTo, __pyx_k_adjacentTo, sizeof(__pyx_k_adjacentTo), 0, 0, 1, 1},
    {&__pyx_n_s_ana_objs, __pyx_k_ana_objs, sizeof(__pyx_k_ana_objs), 0, 0, 1, 1},
    {&__pyx_n_s_annotation, __pyx_k_annotation, sizeof(__pyx_k_annotation), 0, 0, 1, 1},
    {&__pyx_n_s_annotations, __pyx_k_annotations, sizeof(__pyx_k_annotations), 0, 0, 1, 1},
    {&__pyx_n_s_annotationsDict, __pyx_k_annotationsDict, sizeof(__pyx_k_annotationsDict), 0, 0, 1, 1},
    {&__pyx_n_s_annotationsDict_locals_genexpr, __pyx_k_annotationsDict_locals_genexpr, sizeof(__pyx_k_annotationsDict_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_ao, __pyx_k_ao, sizeof(__pyx_k_ao), 0, 0, 1, 1},
    {&__pyx_n_s_ao1, __pyx_k_ao1, sizeof(__pyx_k_ao1), 0, 0, 1, 1},
    {&__pyx_n_s_ao2, __pyx_k_ao2, sizeof(__pyx_k_ao2), 0, 0, 1, 1},
    {&__pyx_n_s_aobjects, __pyx_k_aobjects, sizeof(__pyx_k_aobjects), 0, 0, 1, 1},
    {&__pyx_n_s_aolist, __pyx_k_aolist, sizeof(__pyx_k_aolist), 0, 0, 1, 1},
    {&__pyx_n_s_area, __pyx_k_area, sizeof(__pyx_k_area), 0, 0, 1, 1},
    {&__pyx_n_s_areaErr, __pyx_k_areaErr, sizeof(__pyx_k_areaErr), 0, 0, 1, 1},
    {&__pyx_n_s_areaErrs, __pyx_k_areaErrs, sizeof(__pyx_k_areaErrs), 0, 0, 1, 1},
    {&__pyx_n_s_areas, __pyx_k_areas, sizeof(__pyx_k_areas), 0, 0, 1, 1},
    {&__pyx_n_s_arg, __pyx_k_arg, sizeof(__pyx_k_arg), 0, 0, 1, 1},
    {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
    {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
    {&__pyx_n_s_asdict, __pyx_k_asdict, sizeof(__pyx_k_asdict), 0, 0, 1, 1},
    {&__pyx_n_s_asgrid, __pyx_k_asgrid, sizeof(__pyx_k_asgrid), 0, 0, 1, 1},
    {&__pyx_n_s_asum, __pyx_k_asum, sizeof(__pyx_k_asum), 0, 0, 1, 1},
    {&__pyx_n_s_asymm, __pyx_k_asymm, sizeof(__pyx_k_asymm), 0, 0, 1, 1},
    {&__pyx_n_s_asyncio_coroutines, __pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 0, 1, 1},
    {&__pyx_n_s_attrgetter, __pyx_k_attrgetter, sizeof(__pyx_k_attrgetter), 0, 0, 1, 1},
    {&__pyx_n_s_autostr, __pyx_k_autostr, sizeof(__pyx_k_autostr), 0, 0, 1, 1},
    {&__pyx_n_s_ax, __pyx_k_ax, sizeof(__pyx_k_ax), 0, 0, 1, 1},
    {&__pyx_n_s_ay, __pyx_k_ay, sizeof(__pyx_k_ay), 0, 0, 1, 1},
    {&__pyx_n_s_az, __pyx_k_az, sizeof(__pyx_k_az), 0, 0, 1, 1},
    {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
    {&__pyx_n_s_begin, __pyx_k_begin, sizeof(__pyx_k_begin), 0, 0, 1, 1},
    {&__pyx_n_s_bin, __pyx_k_bin, sizeof(__pyx_k_bin), 0, 0, 1, 1},
    {&__pyx_n_s_binAt, __pyx_k_binAt, sizeof(__pyx_k_binAt), 0, 0, 1, 1},
    {&__pyx_n_s_binErrs, __pyx_k_binErrs, sizeof(__pyx_k_binErrs), 0, 0, 1, 1},
    {&__pyx_n_s_binIndexAt, __pyx_k_binIndexAt, sizeof(__pyx_k_binIndexAt), 0, 0, 1, 1},
    {&__pyx_n_s_binTotal, __pyx_k_binTotal, sizeof(__pyx_k_binTotal), 0, 0, 1, 1},
    {&__pyx_n_s_binareadiv, __pyx_k_binareadiv, sizeof(__pyx_k_binareadiv), 0, 0, 1, 1},
    {&__pyx_n_s_binedges, __pyx_k_binedges, sizeof(__pyx_k_binedges), 0, 0, 1, 1},
    {&__pyx_n_s_bins, __pyx_k_bins, sizeof(__pyx_k_bins), 0, 0, 1, 1},
    {&__pyx_n_s_bins_or_edges, __pyx_k_bins_or_edges, sizeof(__pyx_k_bins_or_edges), 0, 0, 1, 1},
    {&__pyx_n_s_binwidthdiv, __pyx_k_binwidthdiv, sizeof(__pyx_k_binwidthdiv), 0, 0, 1, 1},
    {&__pyx_n_s_buffer, __pyx_k_buffer, sizeof(__pyx_k_buffer), 0, 0, 1, 1},
    {&__pyx_n_s_bytestr_from_file, __pyx_k_bytestr_from_file, sizeof(__pyx_k_bytestr_from_file), 0, 0, 1, 1},
    {&__pyx_n_s_cStringIO, __pyx_k_cStringIO, sizeof(__pyx_k_cStringIO), 0, 0, 1, 1},
    {&__pyx_n_s_c_double, __pyx_k_c_double, sizeof(__pyx_k_c_double), 0, 0, 1, 1},
    {&__pyx_n_s_callback, __pyx_k_callback, sizeof(__pyx_k_callback), 0, 0, 1, 1},
    {&__pyx_n_s_cbin, __pyx_k_cbin, sizeof(__pyx_k_cbin), 0, 0, 1, 1},
    {&__pyx_n_s_cbins, __pyx_k_cbins, sizeof(__pyx_k_cbins), 0, 0, 1, 1},
    {&__pyx_n_s_cedges, __pyx_k_cedges, sizeof(__pyx_k_cedges), 0, 0, 1, 1},
    {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
    {&__pyx_n_s_class_getitem, __pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 0, 1, 1},
    {&__pyx_n_s_clearAnnotations, __pyx_k_clearAnnotations, sizeof(__pyx_k_clearAnnotations), 0, 0, 1, 1},
    {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
    {&__pyx_n_s_clone, __pyx_k_clone, sizeof(__pyx_k_clone), 0, 0, 1, 1},
    {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
    {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
    {&__pyx_n_s_combineWith, __pyx_k_combineWith, sizeof(__pyx_k_combineWith), 0, 0, 1, 1},
    {&__pyx_n_s_compile, __pyx_k_compile, sizeof(__pyx_k_compile), 0, 0, 1, 1},
    {&__pyx_n_s_copy, __pyx_k_copy, sizeof(__pyx_k_copy), 0, 0, 1, 1},
    {&__pyx_kp_s_core_pyx, __pyx_k_core_pyx, sizeof(__pyx_k_core_pyx), 0, 0, 1, 0},
    {&__pyx_n_s_corr, __pyx_k_corr, sizeof(__pyx_k_corr), 0, 0, 1, 1},
    {&__pyx_n_s_correlation, __pyx_k_correlation, sizeof(__pyx_k_correlation), 0, 0, 1, 1},
    {&__pyx_n_s_correlationMatrix, __pyx_k_correlationMatrix, sizeof(__pyx_k_correlationMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_counter, __pyx_k_counter, sizeof(__pyx_k_counter), 0, 0, 1, 1},
    {&__pyx_n_s_covMatrix, __pyx_k_covMatrix, sizeof(__pyx_k_covMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_covariance, __pyx_k_covariance, sizeof(__pyx_k_covariance), 0, 0, 1, 1},
    {&__pyx_n_s_covarianceMatrix, __pyx_k_covarianceMatrix, sizeof(__pyx_k_covarianceMatrix), 0, 0, 1, 1},
    {&__pyx_n_s_ctypes, __pyx_k_ctypes, sizeof(__pyx_k_ctypes), 0, 0, 1, 1},
    {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
    {&__pyx_n_s_da, __pyx_k_da, sizeof(__pyx_k_da), 0, 0, 1, 1},
    {&__pyx_n_s_default, __pyx_k_default, sizeof(__pyx_k_default), 0, 0, 1, 1},
    {&__pyx_n_s_dict, __pyx_k_dict, sizeof(__pyx_k_dict), 0, 0, 1, 1},
    {&__pyx_n_s_dict_2, __pyx_k_dict_2, sizeof(__pyx_k_dict_2), 0, 0, 1, 1},
    {&__pyx_n_s_dim, __pyx_k_dim, sizeof(__pyx_k_dim), 0, 0, 1, 1},
    {&__pyx_kp_u_disable, __pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0, 0},
    {&__pyx_n_s_divide, __pyx_k_divide, sizeof(__pyx_k_divide), 0, 0, 1, 1},
    {&__pyx_n_s_divideBy, __pyx_k_divideBy, sizeof(__pyx_k_divideBy), 0, 0, 1, 1},
    {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
    {&__pyx_n_s_dump, __pyx_k_dump, sizeof(__pyx_k_dump), 0, 0, 1, 1},
    {&__pyx_n_s_dx, __pyx_k_dx, sizeof(__pyx_k_dx), 0, 0, 1, 1},
    {&__pyx_n_s_e, __pyx_k_e, sizeof(__pyx_k_e), 0, 0, 1, 1},
    {&__pyx_n_s_edge, __pyx_k_edge, sizeof(__pyx_k_edge), 0, 0, 1, 1},
    {&__pyx_n_s_edges, __pyx_k_edges, sizeof(__pyx_k_edges), 0, 0, 1, 1},
    {&__pyx_n_s_edges_or_bins, __pyx_k_edges_or_bins, sizeof(__pyx_k_edges_or_bins), 0, 0, 1, 1},
    {&__pyx_n_s_effNumEntries, __pyx_k_effNumEntries, sizeof(__pyx_k_effNumEntries), 0, 0, 1, 1},
    {&__pyx_n_s_efficiency, __pyx_k_efficiency, sizeof(__pyx_k_efficiency), 0, 0, 1, 1},
    {&__pyx_n_s_elem, __pyx_k_elem, sizeof(__pyx_k_elem), 0, 0, 1, 1},
    {&__pyx_kp_u_enable, __pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0, 0},
    {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
    {&__pyx_n_s_end, __pyx_k_end, sizeof(__pyx_k_end), 0, 0, 1, 1},
    {&__pyx_n_s_enter, __pyx_k_enter, sizeof(__pyx_k_enter), 0, 0, 1, 1},
    {&__pyx_n_s_err, __pyx_k_err, sizeof(__pyx_k_err), 0, 0, 1, 1},
    {&__pyx_n_s_errAvg, __pyx_k_errAvg, sizeof(__pyx_k_errAvg), 0, 0, 1, 1},
    {&__pyx_n_s_errMap, __pyx_k_errMap, sizeof(__pyx_k_errMap), 0, 0, 1, 1},
    {&__pyx_n_s_errMap_locals_genexpr, __pyx_k_errMap_locals_genexpr, sizeof(__pyx_k_errMap_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_errMinus, __pyx_k_errMinus, sizeof(__pyx_k_errMinus), 0, 0, 1, 1},
    {&__pyx_n_s_errPlus, __pyx_k_errPlus, sizeof(__pyx_k_errPlus), 0, 0, 1, 1},
    {&__pyx_n_s_errW, __pyx_k_errW, sizeof(__pyx_k_errW), 0, 0, 1, 1},
    {&__pyx_n_s_err_map, __pyx_k_err_map, sizeof(__pyx_k_err_map), 0, 0, 1, 1},
    {&__pyx_n_s_errs, __pyx_k_errs, sizeof(__pyx_k_errs), 0, 0, 1, 1},
    {&__pyx_n_s_es, __pyx_k_es, sizeof(__pyx_k_es), 0, 0, 1, 1},
    {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
    {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
    {&__pyx_n_s_file_or_filename, __pyx_k_file_or_filename, sizeof(__pyx_k_file_or_filename), 0, 0, 1, 1},
    {&__pyx_n_s_filename, __pyx_k_filename, sizeof(__pyx_k_filename), 0, 0, 1, 1},
    {&__pyx_n_s_fill, __pyx_k_fill, sizeof(__pyx_k_fill), 0, 0, 1, 1},
    {&__pyx_n_s_fillBin, __pyx_k_fillBin, sizeof(__pyx_k_fillBin), 0, 0, 1, 1},
    {&__pyx_n_s_fn, __pyx_k_fn, sizeof(__pyx_k_fn), 0, 0, 1, 1},
    {&__pyx_n_s_foci, __pyx_k_foci, sizeof(__pyx_k_foci), 0, 0, 1, 1},
    {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
    {&__pyx_n_s_fptr, __pyx_k_fptr, sizeof(__pyx_k_fptr), 0, 0, 1, 1},
    {&__pyx_n_s_fraction, __pyx_k_fraction, sizeof(__pyx_k_fraction), 0, 0, 1, 1},
    {&__pyx_kp_u_gc, __pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0, 0},
    {&__pyx_n_s_genexpr, __pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_getDataPath, __pyx_k_getDataPath, sizeof(__pyx_k_getDataPath), 0, 0, 1, 1},
    {&__pyx_n_s_getLibPath, __pyx_k_getLibPath, sizeof(__pyx_k_getLibPath), 0, 0, 1, 1},
    {&__pyx_n_s_getYodaDataPath, __pyx_k_getYodaDataPath, sizeof(__pyx_k_getYodaDataPath), 0, 0, 1, 1},
    {&__pyx_n_s_getstate, __pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 0, 1, 1},
    {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1},
    {&__pyx_n_s_h_binsizediv, __pyx_k_h_binsizediv, sizeof(__pyx_k_h_binsizediv), 0, 0, 1, 1},
    {&__pyx_n_s_hasAnnotation, __pyx_k_hasAnnotation, sizeof(__pyx_k_hasAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_hasValidErrorBreakdown, __pyx_k_hasValidErrorBreakdown, sizeof(__pyx_k_hasValidErrorBreakdown), 0, 0, 1, 1},
    {&__pyx_n_s_height, __pyx_k_height, sizeof(__pyx_k_height), 0, 0, 1, 1},
    {&__pyx_n_s_heightErr, __pyx_k_heightErr, sizeof(__pyx_k_heightErr), 0, 0, 1, 1},
    {&__pyx_n_s_heightErrs, __pyx_k_heightErrs, sizeof(__pyx_k_heightErrs), 0, 0, 1, 1},
    {&__pyx_n_s_heights, __pyx_k_heights, sizeof(__pyx_k_heights), 0, 0, 1, 1},
    {&__pyx_n_s_high, __pyx_k_high, sizeof(__pyx_k_high), 0, 0, 1, 1},
    {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
    {&__pyx_n_s_ia, __pyx_k_ia, sizeof(__pyx_k_ia), 0, 0, 1, 1},
    {&__pyx_n_s_ib, __pyx_k_ib, sizeof(__pyx_k_ib), 0, 0, 1, 1},
    {&__pyx_n_s_idx, __pyx_k_idx, sizeof(__pyx_k_idx), 0, 0, 1, 1},
    {&__pyx_n_s_idxs, __pyx_k_idxs, sizeof(__pyx_k_idxs), 0, 0, 1, 1},
    {&__pyx_n_s_ignoreOffDiagonalTerms, __pyx_k_ignoreOffDiagonalTerms, sizeof(__pyx_k_ignoreOffDiagonalTerms), 0, 0, 1, 1},
    {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
    {&__pyx_kp_s_include_AnalysisObject_pyx, __pyx_k_include_AnalysisObject_pyx, sizeof(__pyx_k_include_AnalysisObject_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Bin_pyx, __pyx_k_include_Bin_pyx, sizeof(__pyx_k_include_Bin_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Counter_pyx, __pyx_k_include_Counter_pyx, sizeof(__pyx_k_include_Counter_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Dbn0D_pyx, __pyx_k_include_Dbn0D_pyx, sizeof(__pyx_k_include_Dbn0D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Dbn1D_pyx, __pyx_k_include_Dbn1D_pyx, sizeof(__pyx_k_include_Dbn1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Dbn2D_pyx, __pyx_k_include_Dbn2D_pyx, sizeof(__pyx_k_include_Dbn2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Dbn3D_pyx, __pyx_k_include_Dbn3D_pyx, sizeof(__pyx_k_include_Dbn3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Functions_pyx, __pyx_k_include_Functions_pyx, sizeof(__pyx_k_include_Functions_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Histo1D_pyx, __pyx_k_include_Histo1D_pyx, sizeof(__pyx_k_include_Histo1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Histo2D_pyx, __pyx_k_include_Histo2D_pyx, sizeof(__pyx_k_include_Histo2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_HistoBin1D_pyx, __pyx_k_include_HistoBin1D_pyx, sizeof(__pyx_k_include_HistoBin1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_HistoBin2D_pyx, __pyx_k_include_HistoBin2D_pyx, sizeof(__pyx_k_include_HistoBin2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_IO_pyx, __pyx_k_include_IO_pyx, sizeof(__pyx_k_include_IO_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Point1D_pyx, __pyx_k_include_Point1D_pyx, sizeof(__pyx_k_include_Point1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Point2D_pyx, __pyx_k_include_Point2D_pyx, sizeof(__pyx_k_include_Point2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Point3D_pyx, __pyx_k_include_Point3D_pyx, sizeof(__pyx_k_include_Point3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Point_pyx, __pyx_k_include_Point_pyx, sizeof(__pyx_k_include_Point_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Profile1D_pyx, __pyx_k_include_Profile1D_pyx, sizeof(__pyx_k_include_Profile1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Profile2D_pyx, __pyx_k_include_Profile2D_pyx, sizeof(__pyx_k_include_Profile2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_ProfileBin1D_pyx, __pyx_k_include_ProfileBin1D_pyx, sizeof(__pyx_k_include_ProfileBin1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_ProfileBin2D_pyx, __pyx_k_include_ProfileBin2D_pyx, sizeof(__pyx_k_include_ProfileBin2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Scatter1D_pyx, __pyx_k_include_Scatter1D_pyx, sizeof(__pyx_k_include_Scatter1D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Scatter2D_pyx, __pyx_k_include_Scatter2D_pyx, sizeof(__pyx_k_include_Scatter2D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_Scatter3D_pyx, __pyx_k_include_Scatter3D_pyx, sizeof(__pyx_k_include_Scatter3D_pyx), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_k_include_generated_Bin1D_Dbn1D_py, sizeof(__pyx_k_include_generated_Bin1D_Dbn1D_py), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_k_include_generated_Bin1D_Dbn2D_py, sizeof(__pyx_k_include_generated_Bin1D_Dbn2D_py), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_k_include_generated_Bin2D_Dbn2D_py, sizeof(__pyx_k_include_generated_Bin2D_Dbn2D_py), 0, 0, 1, 0},
    {&__pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_k_include_generated_Bin2D_Dbn3D_py, sizeof(__pyx_k_include_generated_Bin2D_Dbn3D_py), 0, 0, 1, 0},
    {&__pyx_n_s_includeoverflow, __pyx_k_includeoverflow, sizeof(__pyx_k_includeoverflow), 0, 0, 1, 1},
    {&__pyx_n_s_includeoverflows, __pyx_k_includeoverflows, sizeof(__pyx_k_includeoverflows), 0, 0, 1, 1},
    {&__pyx_n_s_includeunderflow, __pyx_k_includeunderflow, sizeof(__pyx_k_includeunderflow), 0, 0, 1, 1},
    {&__pyx_n_s_index_between, __pyx_k_index_between, sizeof(__pyx_k_index_between), 0, 0, 1, 1},
    {&__pyx_n_s_index_map, __pyx_k_index_map, sizeof(__pyx_k_index_map), 0, 0, 1, 1},
    {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
    {&__pyx_n_s_init2, __pyx_k_init2, sizeof(__pyx_k_init2), 0, 0, 1, 1},
    {&__pyx_n_s_init3, __pyx_k_init3, sizeof(__pyx_k_init3), 0, 0, 1, 1},
    {&__pyx_n_s_init4, __pyx_k_init4, sizeof(__pyx_k_init4), 0, 0, 1, 1},
    {&__pyx_n_s_init5, __pyx_k_init5, sizeof(__pyx_k_init5), 0, 0, 1, 1},
    {&__pyx_n_s_init8, __pyx_k_init8, sizeof(__pyx_k_init8), 0, 0, 1, 1},
    {&__pyx_n_s_init_2, __pyx_k_init_2, sizeof(__pyx_k_init_2), 0, 0, 1, 1},
    {&__pyx_n_s_init_3, __pyx_k_init_3, sizeof(__pyx_k_init_3), 0, 0, 1, 1},
    {&__pyx_n_s_init_subclass, __pyx_k_init_subclass, sizeof(__pyx_k_init_subclass), 0, 0, 1, 1},
    {&__pyx_n_s_initializing, __pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 0, 1, 1},
    {&__pyx_n_s_integral, __pyx_k_integral, sizeof(__pyx_k_integral), 0, 0, 1, 1},
    {&__pyx_n_s_integralRange, __pyx_k_integralRange, sizeof(__pyx_k_integralRange), 0, 0, 1, 1},
    {&__pyx_n_s_integralTo, __pyx_k_integralTo, sizeof(__pyx_k_integralTo), 0, 0, 1, 1},
    {&__pyx_n_s_io, __pyx_k_io, sizeof(__pyx_k_io), 0, 0, 1, 1},
    {&__pyx_n_s_is_coroutine, __pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 0, 1, 1},
    {&__pyx_kp_u_isenabled, __pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0, 0},
    {&__pyx_n_s_iss, __pyx_k_iss, sizeof(__pyx_k_iss), 0, 0, 1, 1},
    {&__pyx_n_s_istxt, __pyx_k_istxt, sizeof(__pyx_k_istxt), 0, 0, 1, 1},
    {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
    {&__pyx_n_s_iter, __pyx_k_iter, sizeof(__pyx_k_iter), 0, 0, 1, 1},
    {&__pyx_n_s_iterable, __pyx_k_iterable, sizeof(__pyx_k_iterable), 0, 0, 1, 1},
    {&__pyx_n_s_iteritems, __pyx_k_iteritems, sizeof(__pyx_k_iteritems), 0, 0, 1, 1},
    {&__pyx_n_s_itertools, __pyx_k_itertools, sizeof(__pyx_k_itertools), 0, 0, 1, 1},
    {&__pyx_n_s_ix, __pyx_k_ix, sizeof(__pyx_k_ix), 0, 0, 1, 1},
    {&__pyx_n_s_j, __pyx_k_j, sizeof(__pyx_k_j), 0, 0, 1, 1},
    {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
    {&__pyx_n_s_key, __pyx_k_key, sizeof(__pyx_k_key), 0, 0, 1, 1},
    {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},
    {&__pyx_n_s_linspace, __pyx_k_linspace, sizeof(__pyx_k_linspace), 0, 0, 1, 1},
    {&__pyx_n_s_logspace, __pyx_k_logspace, sizeof(__pyx_k_logspace), 0, 0, 1, 1},
    {&__pyx_n_s_low, __pyx_k_low, sizeof(__pyx_k_low), 0, 0, 1, 1},
    {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
    {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
    {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
    {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
    {&__pyx_n_s_merge, __pyx_k_merge, sizeof(__pyx_k_merge), 0, 0, 1, 1},
    {&__pyx_n_s_mergeBins, __pyx_k_mergeBins, sizeof(__pyx_k_mergeBins), 0, 0, 1, 1},
    {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
    {&__pyx_n_s_min, __pyx_k_min, sizeof(__pyx_k_min), 0, 0, 1, 1},
    {&__pyx_n_s_mkIndexYODA, __pyx_k_mkIndexYODA, sizeof(__pyx_k_mkIndexYODA), 0, 0, 1, 1},
    {&__pyx_n_s_mkScatter, __pyx_k_mkScatter, sizeof(__pyx_k_mkScatter), 0, 0, 1, 1},
    {&__pyx_n_s_mknp, __pyx_k_mknp, sizeof(__pyx_k_mknp), 0, 0, 1, 1},
    {&__pyx_n_s_mktxtifstr, __pyx_k_mktxtifstr, sizeof(__pyx_k_mktxtifstr), 0, 0, 1, 1},
    {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
    {&__pyx_n_s_n, __pyx_k_n, sizeof(__pyx_k_n), 0, 0, 1, 1},
    {&__pyx_kp_s_n_2, __pyx_k_n_2, sizeof(__pyx_k_n_2), 0, 0, 1, 0},
    {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
    {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
    {&__pyx_n_s_nbins, __pyx_k_nbins, sizeof(__pyx_k_nbins), 0, 0, 1, 1},
    {&__pyx_n_s_new, __pyx_k_new, sizeof(__pyx_k_new), 0, 0, 1, 1},
    {&__pyx_n_s_normalize, __pyx_k_normalize, sizeof(__pyx_k_normalize), 0, 0, 1, 1},
    {&__pyx_n_s_normto, __pyx_k_normto, sizeof(__pyx_k_normto), 0, 0, 1, 1},
    {&__pyx_n_s_nsample, __pyx_k_nsample, sizeof(__pyx_k_nsample), 0, 0, 1, 1},
    {&__pyx_n_s_numBins, __pyx_k_numBins, sizeof(__pyx_k_numBins), 0, 0, 1, 1},
    {&__pyx_n_s_numBinsX, __pyx_k_numBinsX, sizeof(__pyx_k_numBinsX), 0, 0, 1, 1},
    {&__pyx_n_s_numBinsY, __pyx_k_numBinsY, sizeof(__pyx_k_numBinsY), 0, 0, 1, 1},
    {&__pyx_n_s_numEntries, __pyx_k_numEntries, sizeof(__pyx_k_numEntries), 0, 0, 1, 1},
    {&__pyx_n_s_numPoints, __pyx_k_numPoints, sizeof(__pyx_k_numPoints), 0, 0, 1, 1},
    {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
    {&__pyx_n_s_nxbins, __pyx_k_nxbins, sizeof(__pyx_k_nxbins), 0, 0, 1, 1},
    {&__pyx_n_s_nybins, __pyx_k_nybins, sizeof(__pyx_k_nybins), 0, 0, 1, 1},
    {&__pyx_n_s_oflow_binwidth, __pyx_k_oflow_binwidth, sizeof(__pyx_k_oflow_binwidth), 0, 0, 1, 1},
    {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
    {&__pyx_n_s_operator, __pyx_k_operator, sizeof(__pyx_k_operator), 0, 0, 1, 1},
    {&__pyx_n_s_oss, __pyx_k_oss, sizeof(__pyx_k_oss), 0, 0, 1, 1},
    {&__pyx_n_s_other, __pyx_k_other, sizeof(__pyx_k_other), 0, 0, 1, 1},
    {&__pyx_n_s_others, __pyx_k_others, sizeof(__pyx_k_others), 0, 0, 1, 1},
    {&__pyx_n_s_overflow, __pyx_k_overflow, sizeof(__pyx_k_overflow), 0, 0, 1, 1},
    {&__pyx_n_s_p, __pyx_k_p, sizeof(__pyx_k_p), 0, 0, 1, 1},
    {&__pyx_n_s_p1ptr, __pyx_k_p1ptr, sizeof(__pyx_k_p1ptr), 0, 0, 1, 1},
    {&__pyx_n_s_p_usestddev, __pyx_k_p_usestddev, sizeof(__pyx_k_p_usestddev), 0, 0, 1, 1},
    {&__pyx_n_s_parseVariations, __pyx_k_parseVariations, sizeof(__pyx_k_parseVariations), 0, 0, 1, 1},
    {&__pyx_n_s_parseyaml, __pyx_k_parseyaml, sizeof(__pyx_k_parseyaml), 0, 0, 1, 1},
    {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1},
    {&__pyx_n_s_pattern_check, __pyx_k_pattern_check, sizeof(__pyx_k_pattern_check), 0, 0, 1, 1},
    {&__pyx_n_s_pattern_check_locals_genexpr, __pyx_k_pattern_check_locals_genexpr, sizeof(__pyx_k_pattern_check_locals_genexpr), 0, 0, 1, 1},
    {&__pyx_n_s_patterns, __pyx_k_patterns, sizeof(__pyx_k_patterns), 0, 0, 1, 1},
    {&__pyx_n_s_pdfspace, __pyx_k_pdfspace, sizeof(__pyx_k_pdfspace), 0, 0, 1, 1},
    {&__pyx_n_s_point, __pyx_k_point, sizeof(__pyx_k_point), 0, 0, 1, 1},
    {&__pyx_n_s_points, __pyx_k_points, sizeof(__pyx_k_points), 0, 0, 1, 1},
    {&__pyx_n_s_precision, __pyx_k_precision, sizeof(__pyx_k_precision), 0, 0, 1, 1},
    {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_state, __pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 0, 1, 1},
    {&__pyx_n_s_pyx_vtable, __pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 0, 1, 1},
    {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
    {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
    {&__pyx_n_s_rb, __pyx_k_rb, sizeof(__pyx_k_rb), 0, 0, 1, 1},
    {&__pyx_n_s_re, __pyx_k_re, sizeof(__pyx_k_re), 0, 0, 1, 1},
    {&__pyx_n_s_read, __pyx_k_read, sizeof(__pyx_k_read), 0, 0, 1, 1},
    {&__pyx_n_s_readAIDA, __pyx_k_readAIDA, sizeof(__pyx_k_readAIDA), 0, 0, 1, 1},
    {&__pyx_n_s_readFLAT, __pyx_k_readFLAT, sizeof(__pyx_k_readFLAT), 0, 0, 1, 1},
    {&__pyx_n_s_readYODA, __pyx_k_readYODA, sizeof(__pyx_k_readYODA), 0, 0, 1, 1},
    {&__pyx_n_s_read_error_pair, __pyx_k_read_error_pair, sizeof(__pyx_k_read_error_pair), 0, 0, 1, 1},
    {&__pyx_n_s_read_symmetric, __pyx_k_read_symmetric, sizeof(__pyx_k_read_symmetric), 0, 0, 1, 1},
    {&__pyx_n_s_rebin, __pyx_k_rebin, sizeof(__pyx_k_rebin), 0, 0, 1, 1},
    {&__pyx_n_s_rebinBy, __pyx_k_rebinBy, sizeof(__pyx_k_rebinBy), 0, 0, 1, 1},
    {&__pyx_n_s_rebinTo, __pyx_k_rebinTo, sizeof(__pyx_k_rebinTo), 0, 0, 1, 1},
    {&__pyx_n_s_reduce, __pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 0, 1, 1},
    {&__pyx_n_s_reduce_cython, __pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 0, 1, 1},
    {&__pyx_n_s_reduce_ex, __pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 0, 1, 1},
    {&__pyx_n_s_relErr, __pyx_k_relErr, sizeof(__pyx_k_relErr), 0, 0, 1, 1},
    {&__pyx_n_s_relErrW, __pyx_k_relErrW, sizeof(__pyx_k_relErrW), 0, 0, 1, 1},
    {&__pyx_n_s_relErrs, __pyx_k_relErrs, sizeof(__pyx_k_relErrs), 0, 0, 1, 1},
    {&__pyx_n_s_repeat, __pyx_k_repeat, sizeof(__pyx_k_repeat), 0, 0, 1, 1},
    {&__pyx_n_s_replace, __pyx_k_replace, sizeof(__pyx_k_replace), 0, 0, 1, 1},
    {&__pyx_n_s_repr, __pyx_k_repr, sizeof(__pyx_k_repr), 0, 0, 1, 1},
    {&__pyx_n_s_repr_string, __pyx_k_repr_string, sizeof(__pyx_k_repr_string), 0, 0, 1, 1},
    {&__pyx_n_s_reset, __pyx_k_reset, sizeof(__pyx_k_reset), 0, 0, 1, 1},
    {&__pyx_n_s_reshape, __pyx_k_reshape, sizeof(__pyx_k_reshape), 0, 0, 1, 1},
    {&__pyx_n_s_rmAnnotation, __pyx_k_rmAnnotation, sizeof(__pyx_k_rmAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_rmPoint, __pyx_k_rmPoint, sizeof(__pyx_k_rmPoint), 0, 0, 1, 1},
    {&__pyx_n_s_rmPoints, __pyx_k_rmPoints, sizeof(__pyx_k_rmPoints), 0, 0, 1, 1},
    {&__pyx_n_s_rmVariations, __pyx_k_rmVariations, sizeof(__pyx_k_rmVariations), 0, 0, 1, 1},
    {&__pyx_n_s_rms, __pyx_k_rms, sizeof(__pyx_k_rms), 0, 0, 1, 1},
    {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1},
    {&__pyx_n_s_rtn, __pyx_k_rtn, sizeof(__pyx_k_rtn), 0, 0, 1, 1},
    {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
    {&__pyx_n_s_s1, __pyx_k_s1, sizeof(__pyx_k_s1), 0, 0, 1, 1},
    {&__pyx_n_s_s2, __pyx_k_s2, sizeof(__pyx_k_s2), 0, 0, 1, 1},
    {&__pyx_n_s_s2ptr, __pyx_k_s2ptr, sizeof(__pyx_k_s2ptr), 0, 0, 1, 1},
    {&__pyx_n_s_s3, __pyx_k_s3, sizeof(__pyx_k_s3), 0, 0, 1, 1},
    {&__pyx_kp_s_s_s, __pyx_k_s_s, sizeof(__pyx_k_s_s), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_d_bins_sumw_0_2g, __pyx_k_s_s_d_bins_sumw_0_2g, sizeof(__pyx_k_s_s_d_bins_sumw_0_2g), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_d_bins_sumw_0_2g_xmean_s, __pyx_k_s_s_d_bins_sumw_0_2g_xmean_s, sizeof(__pyx_k_s_s_d_bins_sumw_0_2g_xmean_s), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_d_bins_sumw_2g, __pyx_k_s_s_d_bins_sumw_2g, sizeof(__pyx_k_s_s_d_bins_sumw_2g), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_d_points, __pyx_k_s_s_d_points, sizeof(__pyx_k_s_s_d_points), 0, 0, 1, 0},
    {&__pyx_kp_s_s_s_sumw_0_2g_err_s, __pyx_k_s_s_sumw_0_2g_err_s, sizeof(__pyx_k_s_s_sumw_0_2g_err_s), 0, 0, 1, 0},
    {&__pyx_kp_s_s_x_g_g, __pyx_k_s_x_g_g, sizeof(__pyx_k_s_x_g_g), 0, 0, 1, 0},
    {&__pyx_kp_s_s_x_g_g_y_g_g, __pyx_k_s_x_g_g_y_g_g, sizeof(__pyx_k_s_x_g_g_y_g_g), 0, 0, 1, 0},
    {&__pyx_n_s_sample, __pyx_k_sample, sizeof(__pyx_k_sample), 0, 0, 1, 1},
    {&__pyx_n_s_sample1, __pyx_k_sample1, sizeof(__pyx_k_sample1), 0, 0, 1, 1},
    {&__pyx_n_s_sample2, __pyx_k_sample2, sizeof(__pyx_k_sample2), 0, 0, 1, 1},
    {&__pyx_n_s_scale, __pyx_k_scale, sizeof(__pyx_k_scale), 0, 0, 1, 1},
    {&__pyx_n_s_scaleW, __pyx_k_scaleW, sizeof(__pyx_k_scaleW), 0, 0, 1, 1},
    {&__pyx_n_s_scaleX, __pyx_k_scaleX, sizeof(__pyx_k_scaleX), 0, 0, 1, 1},
    {&__pyx_n_s_scaleXY, __pyx_k_scaleXY, sizeof(__pyx_k_scaleXY), 0, 0, 1, 1},
    {&__pyx_n_s_scaleXYZ, __pyx_k_scaleXYZ, sizeof(__pyx_k_scaleXYZ), 0, 0, 1, 1},
    {&__pyx_n_s_scaleY, __pyx_k_scaleY, sizeof(__pyx_k_scaleY), 0, 0, 1, 1},
    {&__pyx_n_s_scaleZ, __pyx_k_scaleZ, sizeof(__pyx_k_scaleZ), 0, 0, 1, 1},
    {&__pyx_n_s_sd, __pyx_k_sd, sizeof(__pyx_k_sd), 0, 0, 1, 1},
    {&__pyx_n_s_search, __pyx_k_search, sizeof(__pyx_k_search), 0, 0, 1, 1},
    {&__pyx_n_s_seek, __pyx_k_seek, sizeof(__pyx_k_seek), 0, 0, 1, 1},
    {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
    {&__pyx_kp_s_self__ptr_cannot_be_converted_to, __pyx_k_self__ptr_cannot_be_converted_to, sizeof(__pyx_k_self__ptr_cannot_be_converted_to), 0, 0, 1, 0},
    {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
    {&__pyx_n_s_set, __pyx_k_set, sizeof(__pyx_k_set), 0, 0, 1, 1},
    {&__pyx_n_s_setAnnotation, __pyx_k_setAnnotation, sizeof(__pyx_k_setAnnotation), 0, 0, 1, 1},
    {&__pyx_n_s_setErr, __pyx_k_setErr, sizeof(__pyx_k_setErr), 0, 0, 1, 1},
    {&__pyx_n_s_setErrMinus, __pyx_k_setErrMinus, sizeof(__pyx_k_setErrMinus), 0, 0, 1, 1},
    {&__pyx_n_s_setErrPlus, __pyx_k_setErrPlus, sizeof(__pyx_k_setErrPlus), 0, 0, 1, 1},
    {&__pyx_n_s_setErrs, __pyx_k_setErrs, sizeof(__pyx_k_setErrs), 0, 0, 1, 1},
    {&__pyx_n_s_setPath, __pyx_k_setPath, sizeof(__pyx_k_setPath), 0, 0, 1, 1},
    {&__pyx_n_s_setTitle, __pyx_k_setTitle, sizeof(__pyx_k_setTitle), 0, 0, 1, 1},
    {&__pyx_n_s_setVal, __pyx_k_setVal, sizeof(__pyx_k_setVal), 0, 0, 1, 1},
    {&__pyx_n_s_setX, __pyx_k_setX, sizeof(__pyx_k_setX), 0, 0, 1, 1},
    {&__pyx_n_s_setXErrs, __pyx_k_setXErrs, sizeof(__pyx_k_setXErrs), 0, 0, 1, 1},
    {&__pyx_n_s_setY, __pyx_k_setY, sizeof(__pyx_k_setY), 0, 0, 1, 1},
    {&__pyx_n_s_setYErrs, __pyx_k_setYErrs, sizeof(__pyx_k_setYErrs), 0, 0, 1, 1},
    {&__pyx_n_s_setZ, __pyx_k_setZ, sizeof(__pyx_k_setZ), 0, 0, 1, 1},
    {&__pyx_n_s_setZErrs, __pyx_k_setZErrs, sizeof(__pyx_k_setZErrs), 0, 0, 1, 1},
    {&__pyx_n_s_set_name, __pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 0, 1, 1},
    {&__pyx_n_s_setstate, __pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 0, 1, 1},
    {&__pyx_n_s_setstate_cython, __pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 0, 1, 1},
    {&__pyx_n_s_sigma_i, __pyx_k_sigma_i, sizeof(__pyx_k_sigma_i), 0, 0, 1, 1},
    {&__pyx_n_s_sigma_j, __pyx_k_sigma_j, sizeof(__pyx_k_sigma_j), 0, 0, 1, 1},
    {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1},
    {&__pyx_n_s_spec, __pyx_k_spec, sizeof(__pyx_k_spec), 0, 0, 1, 1},
    {&__pyx_n_s_stdDev, __pyx_k_stdDev, sizeof(__pyx_k_stdDev), 0, 0, 1, 1},
    {&__pyx_n_s_stdErr, __pyx_k_stdErr, sizeof(__pyx_k_stdErr), 0, 0, 1, 1},
    {&__pyx_n_s_stdin, __pyx_k_stdin, sizeof(__pyx_k_stdin), 0, 0, 1, 1},
    {&__pyx_n_s_stdout, __pyx_k_stdout, sizeof(__pyx_k_stdout), 0, 0, 1, 1},
    {&__pyx_n_s_str, __pyx_k_str, sizeof(__pyx_k_str), 0, 0, 1, 1},
    {&__pyx_n_s_str_to_file, __pyx_k_str_to_file, sizeof(__pyx_k_str_to_file), 0, 0, 1, 1},
    {&__pyx_kp_s_stringsource, __pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 0, 1, 0},
    {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},
    {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
    {&__pyx_n_s_sumW, __pyx_k_sumW, sizeof(__pyx_k_sumW), 0, 0, 1, 1},
    {&__pyx_n_s_sumW2, __pyx_k_sumW2, sizeof(__pyx_k_sumW2), 0, 0, 1, 1},
    {&__pyx_n_s_sumWX, __pyx_k_sumWX, sizeof(__pyx_k_sumWX), 0, 0, 1, 1},
    {&__pyx_n_s_sumWX2, __pyx_k_sumWX2, sizeof(__pyx_k_sumWX2), 0, 0, 1, 1},
    {&__pyx_n_s_sumWXY, __pyx_k_sumWXY, sizeof(__pyx_k_sumWXY), 0, 0, 1, 1},
    {&__pyx_n_s_sumWXZ, __pyx_k_sumWXZ, sizeof(__pyx_k_sumWXZ), 0, 0, 1, 1},
    {&__pyx_n_s_sumWY, __pyx_k_sumWY, sizeof(__pyx_k_sumWY), 0, 0, 1, 1},
    {&__pyx_n_s_sumWY2, __pyx_k_sumWY2, sizeof(__pyx_k_sumWY2), 0, 0, 1, 1},
    {&__pyx_n_s_sumWYZ, __pyx_k_sumWYZ, sizeof(__pyx_k_sumWYZ), 0, 0, 1, 1},
    {&__pyx_n_s_sumWZ, __pyx_k_sumWZ, sizeof(__pyx_k_sumWZ), 0, 0, 1, 1},
    {&__pyx_n_s_sumWZ2, __pyx_k_sumWZ2, sizeof(__pyx_k_sumWZ2), 0, 0, 1, 1},
    {&__pyx_n_s_sumWs, __pyx_k_sumWs, sizeof(__pyx_k_sumWs), 0, 0, 1, 1},
    {&__pyx_n_s_super, __pyx_k_super, sizeof(__pyx_k_super), 0, 0, 1, 1},
    {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
    {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
    {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
    {&__pyx_n_s_title, __pyx_k_title, sizeof(__pyx_k_title), 0, 0, 1, 1},
    {&__pyx_n_s_toDict, __pyx_k_toDict, sizeof(__pyx_k_toDict), 0, 0, 1, 1},
    {&__pyx_n_s_toIntegral, __pyx_k_toIntegral, sizeof(__pyx_k_toIntegral), 0, 0, 1, 1},
    {&__pyx_n_s_totalDbn, __pyx_k_totalDbn, sizeof(__pyx_k_totalDbn), 0, 0, 1, 1},
    {&__pyx_n_s_transformX, __pyx_k_transformX, sizeof(__pyx_k_transformX), 0, 0, 1, 1},
    {&__pyx_n_s_transformY, __pyx_k_transformY, sizeof(__pyx_k_transformY), 0, 0, 1, 1},
    {&__pyx_n_s_transformZ, __pyx_k_transformZ, sizeof(__pyx_k_transformZ), 0, 0, 1, 1},
    {&__pyx_n_s_try_loop, __pyx_k_try_loop, sizeof(__pyx_k_try_loop), 0, 0, 1, 1},
    {&__pyx_n_s_tuples, __pyx_k_tuples, sizeof(__pyx_k_tuples), 0, 0, 1, 1},
    {&__pyx_n_s_type, __pyx_k_type, sizeof(__pyx_k_type), 0, 0, 1, 1},
    {&__pyx_n_s_uflow_binwidth, __pyx_k_uflow_binwidth, sizeof(__pyx_k_uflow_binwidth), 0, 0, 1, 1},
    {&__pyx_n_s_underflow, __pyx_k_underflow, sizeof(__pyx_k_underflow), 0, 0, 1, 1},
    {&__pyx_n_s_unique, __pyx_k_unique, sizeof(__pyx_k_unique), 0, 0, 1, 1},
    {&__pyx_n_s_unpatterns, __pyx_k_unpatterns, sizeof(__pyx_k_unpatterns), 0, 0, 1, 1},
    {&__pyx_n_s_updateTotalUncertainty, __pyx_k_updateTotalUncertainty, sizeof(__pyx_k_updateTotalUncertainty), 0, 0, 1, 1},
    {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1},
    {&__pyx_n_s_usefocus, __pyx_k_usefocus, sizeof(__pyx_k_usefocus), 0, 0, 1, 1},
    {&__pyx_n_s_usestddev, __pyx_k_usestddev, sizeof(__pyx_k_usestddev), 0, 0, 1, 1},
    {&__pyx_kp_s_utf_8, __pyx_k_utf_8, sizeof(__pyx_k_utf_8), 0, 0, 1, 0},
    {&__pyx_n_s_util, __pyx_k_util, sizeof(__pyx_k_util), 0, 0, 1, 1},
    {&__pyx_n_s_v, __pyx_k_v, sizeof(__pyx_k_v), 0, 0, 1, 1},
    {&__pyx_n_s_val, __pyx_k_val, sizeof(__pyx_k_val), 0, 0, 1, 1},
    {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
    {&__pyx_n_s_var, __pyx_k_var, sizeof(__pyx_k_var), 0, 0, 1, 1},
    {&__pyx_n_s_variance, __pyx_k_variance, sizeof(__pyx_k_variance), 0, 0, 1, 1},
    {&__pyx_n_s_variations, __pyx_k_variations, sizeof(__pyx_k_variations), 0, 0, 1, 1},
    {&__pyx_n_s_vars, __pyx_k_vars, sizeof(__pyx_k_vars), 0, 0, 1, 1},
    {&__pyx_n_s_vec, __pyx_k_vec, sizeof(__pyx_k_vec), 0, 0, 1, 1},
    {&__pyx_n_s_version, __pyx_k_version, sizeof(__pyx_k_version), 0, 0, 1, 1},
    {&__pyx_n_s_version_info, __pyx_k_version_info, sizeof(__pyx_k_version_info), 0, 0, 1, 1},
    {&__pyx_n_s_vol, __pyx_k_vol, sizeof(__pyx_k_vol), 0, 0, 1, 1},
    {&__pyx_n_s_volErrs, __pyx_k_volErrs, sizeof(__pyx_k_volErrs), 0, 0, 1, 1},
    {&__pyx_n_s_volume, __pyx_k_volume, sizeof(__pyx_k_volume), 0, 0, 1, 1},
    {&__pyx_n_s_volumeErr, __pyx_k_volumeErr, sizeof(__pyx_k_volumeErr), 0, 0, 1, 1},
    {&__pyx_n_s_volumeErrs, __pyx_k_volumeErrs, sizeof(__pyx_k_volumeErrs), 0, 0, 1, 1},
    {&__pyx_n_s_volumes, __pyx_k_volumes, sizeof(__pyx_k_volumes), 0, 0, 1, 1},
    {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
    {&__pyx_n_s_weight, __pyx_k_weight, sizeof(__pyx_k_weight), 0, 0, 1, 1},
    {&__pyx_n_s_write, __pyx_k_write, sizeof(__pyx_k_write), 0, 0, 1, 1},
    {&__pyx_n_s_writeAIDA, __pyx_k_writeAIDA, sizeof(__pyx_k_writeAIDA), 0, 0, 1, 1},
    {&__pyx_n_s_writeFLAT, __pyx_k_writeFLAT, sizeof(__pyx_k_writeFLAT), 0, 0, 1, 1},
    {&__pyx_n_s_writeVariationsToAnnotations, __pyx_k_writeVariationsToAnnotations, sizeof(__pyx_k_writeVariationsToAnnotations), 0, 0, 1, 1},
    {&__pyx_n_s_writeYODA, __pyx_k_writeYODA, sizeof(__pyx_k_writeYODA), 0, 0, 1, 1},
    {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
    {&__pyx_n_s_xEdges, __pyx_k_xEdges, sizeof(__pyx_k_xEdges), 0, 0, 1, 1},
    {&__pyx_n_s_xErrAvg, __pyx_k_xErrAvg, sizeof(__pyx_k_xErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_xErrAvgs, __pyx_k_xErrAvgs, sizeof(__pyx_k_xErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_xErrs, __pyx_k_xErrs, sizeof(__pyx_k_xErrs), 0, 0, 1, 1},
    {&__pyx_n_s_xErrsFromSource, __pyx_k_xErrsFromSource, sizeof(__pyx_k_xErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_xFoci, __pyx_k_xFoci, sizeof(__pyx_k_xFoci), 0, 0, 1, 1},
    {&__pyx_n_s_xFocus, __pyx_k_xFocus, sizeof(__pyx_k_xFocus), 0, 0, 1, 1},
    {&__pyx_n_s_xMax, __pyx_k_xMax, sizeof(__pyx_k_xMax), 0, 0, 1, 1},
    {&__pyx_n_s_xMaxs, __pyx_k_xMaxs, sizeof(__pyx_k_xMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_xMean, __pyx_k_xMean, sizeof(__pyx_k_xMean), 0, 0, 1, 1},
    {&__pyx_n_s_xMid, __pyx_k_xMid, sizeof(__pyx_k_xMid), 0, 0, 1, 1},
    {&__pyx_n_s_xMids, __pyx_k_xMids, sizeof(__pyx_k_xMids), 0, 0, 1, 1},
    {&__pyx_n_s_xMin, __pyx_k_xMin, sizeof(__pyx_k_xMin), 0, 0, 1, 1},
    {&__pyx_n_s_xMins, __pyx_k_xMins, sizeof(__pyx_k_xMins), 0, 0, 1, 1},
    {&__pyx_n_s_xRMS, __pyx_k_xRMS, sizeof(__pyx_k_xRMS), 0, 0, 1, 1},
    {&__pyx_n_s_xStdDev, __pyx_k_xStdDev, sizeof(__pyx_k_xStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_xStdErr, __pyx_k_xStdErr, sizeof(__pyx_k_xStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_xVals, __pyx_k_xVals, sizeof(__pyx_k_xVals), 0, 0, 1, 1},
    {&__pyx_n_s_xVariance, __pyx_k_xVariance, sizeof(__pyx_k_xVariance), 0, 0, 1, 1},
    {&__pyx_n_s_xWidth, __pyx_k_xWidth, sizeof(__pyx_k_xWidth), 0, 0, 1, 1},
    {&__pyx_n_s_xWidths, __pyx_k_xWidths, sizeof(__pyx_k_xWidths), 0, 0, 1, 1},
    {&__pyx_n_s_xcuts, __pyx_k_xcuts, sizeof(__pyx_k_xcuts), 0, 0, 1, 1},
    {&__pyx_n_s_xcuts_2, __pyx_k_xcuts_2, sizeof(__pyx_k_xcuts_2), 0, 0, 1, 1},
    {&__pyx_n_s_xedges, __pyx_k_xedges, sizeof(__pyx_k_xedges), 0, 0, 1, 1},
    {&__pyx_n_s_xerrs, __pyx_k_xerrs, sizeof(__pyx_k_xerrs), 0, 0, 1, 1},
    {&__pyx_n_s_xhigh, __pyx_k_xhigh, sizeof(__pyx_k_xhigh), 0, 0, 1, 1},
    {&__pyx_n_s_xlow, __pyx_k_xlow, sizeof(__pyx_k_xlow), 0, 0, 1, 1},
    {&__pyx_n_s_xmax, __pyx_k_xmax, sizeof(__pyx_k_xmax), 0, 0, 1, 1},
    {&__pyx_n_s_xmin, __pyx_k_xmin, sizeof(__pyx_k_xmin), 0, 0, 1, 1},
    {&__pyx_n_s_xs, __pyx_k_xs, sizeof(__pyx_k_xs), 0, 0, 1, 1},
    {&__pyx_n_s_xyEdges, __pyx_k_xyEdges, sizeof(__pyx_k_xyEdges), 0, 0, 1, 1},
    {&__pyx_n_s_xyFocus, __pyx_k_xyFocus, sizeof(__pyx_k_xyFocus), 0, 0, 1, 1},
    {&__pyx_n_s_xyMax, __pyx_k_xyMax, sizeof(__pyx_k_xyMax), 0, 0, 1, 1},
    {&__pyx_n_s_xyMean, __pyx_k_xyMean, sizeof(__pyx_k_xyMean), 0, 0, 1, 1},
    {&__pyx_n_s_xyMid, __pyx_k_xyMid, sizeof(__pyx_k_xyMid), 0, 0, 1, 1},
    {&__pyx_n_s_xyMin, __pyx_k_xyMin, sizeof(__pyx_k_xyMin), 0, 0, 1, 1},
    {&__pyx_n_s_xyRMS, __pyx_k_xyRMS, sizeof(__pyx_k_xyRMS), 0, 0, 1, 1},
    {&__pyx_n_s_xyStdDev, __pyx_k_xyStdDev, sizeof(__pyx_k_xyStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_xyStdErr, __pyx_k_xyStdErr, sizeof(__pyx_k_xyStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_xyVariance, __pyx_k_xyVariance, sizeof(__pyx_k_xyVariance), 0, 0, 1, 1},
    {&__pyx_n_s_xyWidths, __pyx_k_xyWidths, sizeof(__pyx_k_xyWidths), 0, 0, 1, 1},
    {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
    {&__pyx_n_s_yEdges, __pyx_k_yEdges, sizeof(__pyx_k_yEdges), 0, 0, 1, 1},
    {&__pyx_n_s_yErrAvg, __pyx_k_yErrAvg, sizeof(__pyx_k_yErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_yErrAvgs, __pyx_k_yErrAvgs, sizeof(__pyx_k_yErrAvgs), 0, 0, 1, 1},
    {&__pyx_n_s_yErrs, __pyx_k_yErrs, sizeof(__pyx_k_yErrs), 0, 0, 1, 1},
    {&__pyx_n_s_yErrsFromSource, __pyx_k_yErrsFromSource, sizeof(__pyx_k_yErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_yFoci, __pyx_k_yFoci, sizeof(__pyx_k_yFoci), 0, 0, 1, 1},
    {&__pyx_n_s_yFocus, __pyx_k_yFocus, sizeof(__pyx_k_yFocus), 0, 0, 1, 1},
    {&__pyx_n_s_yMax, __pyx_k_yMax, sizeof(__pyx_k_yMax), 0, 0, 1, 1},
    {&__pyx_n_s_yMaxs, __pyx_k_yMaxs, sizeof(__pyx_k_yMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_yMean, __pyx_k_yMean, sizeof(__pyx_k_yMean), 0, 0, 1, 1},
    {&__pyx_n_s_yMeans, __pyx_k_yMeans, sizeof(__pyx_k_yMeans), 0, 0, 1, 1},
    {&__pyx_n_s_yMid, __pyx_k_yMid, sizeof(__pyx_k_yMid), 0, 0, 1, 1},
    {&__pyx_n_s_yMids, __pyx_k_yMids, sizeof(__pyx_k_yMids), 0, 0, 1, 1},
    {&__pyx_n_s_yMin, __pyx_k_yMin, sizeof(__pyx_k_yMin), 0, 0, 1, 1},
    {&__pyx_n_s_yMins, __pyx_k_yMins, sizeof(__pyx_k_yMins), 0, 0, 1, 1},
    {&__pyx_n_s_yRMS, __pyx_k_yRMS, sizeof(__pyx_k_yRMS), 0, 0, 1, 1},
    {&__pyx_n_s_yStdDev, __pyx_k_yStdDev, sizeof(__pyx_k_yStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_yStdDevs, __pyx_k_yStdDevs, sizeof(__pyx_k_yStdDevs), 0, 0, 1, 1},
    {&__pyx_n_s_yStdErr, __pyx_k_yStdErr, sizeof(__pyx_k_yStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_yStdErrs, __pyx_k_yStdErrs, sizeof(__pyx_k_yStdErrs), 0, 0, 1, 1},
    {&__pyx_n_s_yVals, __pyx_k_yVals, sizeof(__pyx_k_yVals), 0, 0, 1, 1},
    {&__pyx_n_s_yVariance, __pyx_k_yVariance, sizeof(__pyx_k_yVariance), 0, 0, 1, 1},
    {&__pyx_n_s_yWidth, __pyx_k_yWidth, sizeof(__pyx_k_yWidth), 0, 0, 1, 1},
    {&__pyx_n_s_yWidths, __pyx_k_yWidths, sizeof(__pyx_k_yWidths), 0, 0, 1, 1},
    {&__pyx_n_s_ycuts, __pyx_k_ycuts, sizeof(__pyx_k_ycuts), 0, 0, 1, 1},
    {&__pyx_n_s_ycuts_2, __pyx_k_ycuts_2, sizeof(__pyx_k_ycuts_2), 0, 0, 1, 1},
    {&__pyx_n_s_yedges, __pyx_k_yedges, sizeof(__pyx_k_yedges), 0, 0, 1, 1},
    {&__pyx_n_s_yerrs, __pyx_k_yerrs, sizeof(__pyx_k_yerrs), 0, 0, 1, 1},
    {&__pyx_n_s_yhigh, __pyx_k_yhigh, sizeof(__pyx_k_yhigh), 0, 0, 1, 1},
    {&__pyx_n_s_ylow, __pyx_k_ylow, sizeof(__pyx_k_ylow), 0, 0, 1, 1},
    {&__pyx_n_b_yoda, __pyx_k_yoda, sizeof(__pyx_k_yoda), 0, 0, 0, 1},
    {&__pyx_n_s_yoda, __pyx_k_yoda, sizeof(__pyx_k_yoda), 0, 0, 1, 1},
    {&__pyx_n_s_yoda_core, __pyx_k_yoda_core, sizeof(__pyx_k_yoda_core), 0, 0, 1, 1},
    {&__pyx_n_s_yoda_util, __pyx_k_yoda_util, sizeof(__pyx_k_yoda_util), 0, 0, 1, 1},
    {&__pyx_n_s_ys, __pyx_k_ys, sizeof(__pyx_k_ys), 0, 0, 1, 1},
    {&__pyx_n_s_z, __pyx_k_z, sizeof(__pyx_k_z), 0, 0, 1, 1},
    {&__pyx_n_s_zErrAvg, __pyx_k_zErrAvg, sizeof(__pyx_k_zErrAvg), 0, 0, 1, 1},
    {&__pyx_n_s_zErrs, __pyx_k_zErrs, sizeof(__pyx_k_zErrs), 0, 0, 1, 1},
    {&__pyx_n_s_zErrsFromSource, __pyx_k_zErrsFromSource, sizeof(__pyx_k_zErrsFromSource), 0, 0, 1, 1},
    {&__pyx_n_s_zMax, __pyx_k_zMax, sizeof(__pyx_k_zMax), 0, 0, 1, 1},
    {&__pyx_n_s_zMaxs, __pyx_k_zMaxs, sizeof(__pyx_k_zMaxs), 0, 0, 1, 1},
    {&__pyx_n_s_zMeans, __pyx_k_zMeans, sizeof(__pyx_k_zMeans), 0, 0, 1, 1},
    {&__pyx_n_s_zMin, __pyx_k_zMin, sizeof(__pyx_k_zMin), 0, 0, 1, 1},
    {&__pyx_n_s_zMins, __pyx_k_zMins, sizeof(__pyx_k_zMins), 0, 0, 1, 1},
    {&__pyx_n_s_zStdDev, __pyx_k_zStdDev, sizeof(__pyx_k_zStdDev), 0, 0, 1, 1},
    {&__pyx_n_s_zStdDevs, __pyx_k_zStdDevs, sizeof(__pyx_k_zStdDevs), 0, 0, 1, 1},
    {&__pyx_n_s_zStdErr, __pyx_k_zStdErr, sizeof(__pyx_k_zStdErr), 0, 0, 1, 1},
    {&__pyx_n_s_zStdErrs, __pyx_k_zStdErrs, sizeof(__pyx_k_zStdErrs), 0, 0, 1, 1},
    {&__pyx_n_s_zVals, __pyx_k_zVals, sizeof(__pyx_k_zVals), 0, 0, 1, 1},
    {&__pyx_n_s_zerrs, __pyx_k_zerrs, sizeof(__pyx_k_zerrs), 0, 0, 1, 1},
    {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
    {&__pyx_n_s_zs, __pyx_k_zs, sizeof(__pyx_k_zs), 0, 0, 1, 1},
    {0, 0, 0, 0, 0, 0, 0}
  };
  return __Pyx_InitStrings(__pyx_string_tab);
}
/* #### Code section: cached_builtins ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 2, __pyx_L1_error)
  __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(1, 83, __pyx_L1_error)
  __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_n_s_min); if (!__pyx_builtin_min) __PYX_ERR(2, 458, __pyx_L1_error)
  __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) __PYX_ERR(2, 462, __pyx_L1_error)
  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) __PYX_ERR(2, 514, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(3, 255, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(3, 307, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(4, 142, __pyx_L1_error)
  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) __PYX_ERR(5, 86, __pyx_L1_error)
  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(5, 95, __pyx_L1_error)
  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) __PYX_ERR(6, 98, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 68, __pyx_L1_error)
  __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(7, 55, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "yoda/util.pxd":9
 *     cdef inline void* ptr(self) except NULL:
 *         if self._ptr == NULL:
 *             raise MemoryError('Null pointer referenced: perhaps the class is uninitialised.')             # <<<<<<<<<<<<<<
 *         return self._ptr
 * 
 */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Null_pointer_referenced_perhaps); if (unlikely(!__pyx_tuple_)) __PYX_ERR(7, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "include/Histo2D.pyx":400
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[:-1]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMin() for b in self.bins()])
 */
  __pyx_slice__5 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(3, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__5);
  __Pyx_GIVEREF(__pyx_slice__5);

  /* "include/Histo2D.pyx":410
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 *             rtn = self.xEdges()[1:]             # <<<<<<<<<<<<<<
 *         else:
 *             rtn = self._mknp([b.xMax() for b in self.bins()])
 */
  __pyx_slice__6 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) __PYX_ERR(3, 410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_slice__6);
  __Pyx_GIVEREF(__pyx_slice__6);

  /* "include/Scatter1D.pyx":142
 *             callback = ctypes.CFUNCTYPE(ctypes.c_double, ctypes.c_double)(f)
 *         except:
 *             raise RuntimeError("Callback is not of type (double) -> double")             # <<<<<<<<<<<<<<
 *         fptr = (<c.dbl_dbl_fptr*><size_t>ctypes.addressof(callback))[0]
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 */
  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Callback_is_not_of_type_double_d); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(4, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__7);
  __Pyx_GIVEREF(__pyx_tuple__7);

  /* "include/IO.pyx":98
 *         s = sys.stdin.buffer.read()
 *     else:
 *         with open(file_or_filename, "rb") as f:             # <<<<<<<<<<<<<<
 *             s = f.read()
 *     if type(s) is str:
 */
  __pyx_tuple__9 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(6, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "include/IO.pyx":122
 * 
 * def _istxt(x):
 *     if sys.version_info < (3, 0):             # <<<<<<<<<<<<<<
 *         return type(x) in [unicode, str]
 *     else:
 */
  __pyx_tuple__10 = PyTuple_Pack(2, __pyx_int_3, __pyx_int_0); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(6, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "include/IO.pyx":366
 *                     "
 *         """
 *         return self.repr_string.replace("\\n","\n")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_kp_s_n_2, __pyx_kp_s__11); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(6, 366, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "yoda/core.pyx":14
 * cimport yoda.declarations as c
 * cimport yoda.util as cutil
 * import yoda.util as util             # <<<<<<<<<<<<<<
 * 
 * ## Pure Python imports
 */
  __pyx_tuple__13 = PyTuple_Pack(2, __pyx_n_s_yoda, __pyx_n_s_util); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(8, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "yoda/core.pyx":20
 * from operator import attrgetter
 * 
 * def version():             # <<<<<<<<<<<<<<
 *     "Return YODA library version as a string"
 *     return c.version()
 */
  __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_core_pyx, __pyx_n_s_version, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(8, 20, __pyx_L1_error)

  /* "yoda/core.pyx":24
 *     return c.version()
 * 
 * def getLibPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()
 */
  __pyx_codeobj__15 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_core_pyx, __pyx_n_s_getLibPath, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__15)) __PYX_ERR(8, 24, __pyx_L1_error)

  /* "yoda/core.pyx":28
 *     return c.getLibPath()
 * 
 * def getDataPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()
 */
  __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_core_pyx, __pyx_n_s_getDataPath, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(8, 28, __pyx_L1_error)

  /* "yoda/core.pyx":32
 *     return c.getDataPath()
 * 
 * def getYodaDataPath():             # <<<<<<<<<<<<<<
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()
 */
  __pyx_codeobj__17 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_core_pyx, __pyx_n_s_getYodaDataPath, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__17)) __PYX_ERR(8, 32, __pyx_L1_error)

  /* "include/Dbn0D.pyx":26
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(9, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);
  __pyx_codeobj__19 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_copy, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__19)) __PYX_ERR(9, 26, __pyx_L1_error)

  /* "include/Dbn0D.pyx":29
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_reset, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(9, 29, __pyx_L1_error)

  /* "include/Dbn0D.pyx":38
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float weight=1.0) -> None
 */
  __pyx_tuple__21 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);
  __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_fill, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(9, 38, __pyx_L1_error)
  __pyx_tuple__23 = PyTuple_Pack(2, __pyx_float_1_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);

  /* "include/Dbn0D.pyx":46
 *         self.d0ptr().fill(weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__24 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_w); if (unlikely(!__pyx_tuple__24)) __PYX_ERR(9, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);
  __pyx_codeobj__25 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_scaleW, 46, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__25)) __PYX_ERR(9, 46, __pyx_L1_error)

  /* "include/Dbn0D.pyx":56
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()
 */
  __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_numEntries, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(9, 56, __pyx_L1_error)

  /* "include/Dbn0D.pyx":61
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()
 */
  __pyx_codeobj__27 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_effNumEntries, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__27)) __PYX_ERR(9, 61, __pyx_L1_error)

  /* "include/Dbn0D.pyx":67
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d0ptr().errW()
 */
  __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_errW, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(9, 67, __pyx_L1_error)

  /* "include/Dbn0D.pyx":72
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()
 */
  __pyx_codeobj__29 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_relErrW, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__29)) __PYX_ERR(9, 72, __pyx_L1_error)

  /* "include/Dbn0D.pyx":78
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()
 */
  __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_sumW, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(9, 78, __pyx_L1_error)

  /* "include/Dbn0D.pyx":83
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()
 */
  __pyx_codeobj__31 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn0D_pyx, __pyx_n_s_sumW2, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__31)) __PYX_ERR(9, 83, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_tuple__33 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_pyx_state); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);
  __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Dbn1D.pyx":28
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */
  __pyx_codeobj__35 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_copy, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__35)) __PYX_ERR(10, 28, __pyx_L1_error)

  /* "include/Dbn1D.pyx":31
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_reset, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(10, 31, __pyx_L1_error)

  /* "include/Dbn1D.pyx":40
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float weight=1.0) -> None
 */
  __pyx_tuple__37 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(10, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);
  __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_fill, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(10, 40, __pyx_L1_error)

  /* "include/Dbn1D.pyx":48
 *         self.d1ptr().fill(x, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__39 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_scaleW, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__39)) __PYX_ERR(10, 48, __pyx_L1_error)

  /* "include/Dbn1D.pyx":56
 *         self.d1ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__40 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_x); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(10, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);
  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_scaleX, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) __PYX_ERR(10, 56, __pyx_L1_error)

  /* "include/Dbn1D.pyx":66
 * 
 *     #@property
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */
  __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_xMean, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(10, 66, __pyx_L1_error)

  /* "include/Dbn1D.pyx":71
 * 
 *     #@property
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */
  __pyx_codeobj__43 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_xVariance, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__43)) __PYX_ERR(10, 71, __pyx_L1_error)

  /* "include/Dbn1D.pyx":76
 * 
 *     #@property
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */
  __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_xStdDev, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(10, 76, __pyx_L1_error)

  /* "include/Dbn1D.pyx":81
 * 
 *     #@property
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */
  __pyx_codeobj__45 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_xStdErr, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__45)) __PYX_ERR(10, 81, __pyx_L1_error)

  /* "include/Dbn1D.pyx":86
 * 
 *     #@property
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */
  __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_xRMS, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(10, 86, __pyx_L1_error)

  /* "include/Dbn1D.pyx":91
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */
  __pyx_codeobj__47 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_numEntries, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__47)) __PYX_ERR(10, 91, __pyx_L1_error)

  /* "include/Dbn1D.pyx":96
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */
  __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_effNumEntries, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(10, 96, __pyx_L1_error)

  /* "include/Dbn1D.pyx":102
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */
  __pyx_codeobj__49 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_errW, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__49)) __PYX_ERR(10, 102, __pyx_L1_error)

  /* "include/Dbn1D.pyx":107
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */
  __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_relErrW, 107, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(10, 107, __pyx_L1_error)

  /* "include/Dbn1D.pyx":113
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */
  __pyx_codeobj__51 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_sumW, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__51)) __PYX_ERR(10, 113, __pyx_L1_error)

  /* "include/Dbn1D.pyx":118
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */
  __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_sumW2, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(10, 118, __pyx_L1_error)

  /* "include/Dbn1D.pyx":123
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */
  __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_sumWX, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(10, 123, __pyx_L1_error)

  /* "include/Dbn1D.pyx":128
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */
  __pyx_codeobj__54 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn1D_pyx, __pyx_n_s_sumWX2, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__54)) __PYX_ERR(10, 128, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__55 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Dbn2D.pyx":32
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */
  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_copy, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(11, 32, __pyx_L1_error)

  /* "include/Dbn2D.pyx":35
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__58 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_reset, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__58)) __PYX_ERR(11, 35, __pyx_L1_error)

  /* "include/Dbn2D.pyx":43
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, weight=1.0) -> None
 */
  __pyx_tuple__59 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(11, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);
  __pyx_codeobj__60 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_fill, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__60)) __PYX_ERR(11, 43, __pyx_L1_error)

  /* "include/Dbn2D.pyx":53
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_scaleW, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(11, 53, __pyx_L1_error)

  /* "include/Dbn2D.pyx":61
 *         self.d2ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__62 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_scaleX, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__62)) __PYX_ERR(11, 61, __pyx_L1_error)

  /* "include/Dbn2D.pyx":69
 *         self.d2ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__63 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_y); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(11, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);
  __pyx_codeobj__64 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_scaleY, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__64)) __PYX_ERR(11, 69, __pyx_L1_error)

  /* "include/Dbn2D.pyx":77
 *         self.d2ptr().scaleY(y)
 * 
 *     def scaleXY(self, x, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float) -> None
 */
  __pyx_tuple__65 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__65)) __PYX_ERR(11, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);
  __pyx_codeobj__66 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_scaleXY, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__66)) __PYX_ERR(11, 77, __pyx_L1_error)

  /* "include/Dbn2D.pyx":89
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XY(self.d2ptr().xMean(), self.d2ptr().yMean())
 */
  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_mean, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(11, 89, __pyx_L1_error)

  /* "include/Dbn2D.pyx":94
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XY(self.d2ptr().xVariance(), self.d2ptr().yVariance())
 */
  __pyx_codeobj__68 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_variance, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__68)) __PYX_ERR(11, 94, __pyx_L1_error)

  /* "include/Dbn2D.pyx":99
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XY(self.d2ptr().xStdDev(), self.d2ptr().yStdDev())
 */
  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_stdDev, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(11, 99, __pyx_L1_error)

  /* "include/Dbn2D.pyx":104
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XY(self.d2ptr().xStdErr(), self.d2ptr().yStdErr())
 */
  __pyx_codeobj__70 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_stdErr, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__70)) __PYX_ERR(11, 104, __pyx_L1_error)

  /* "include/Dbn2D.pyx":109
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XY(self.d2ptr().xRMS(), self.d2ptr().yRMS())
 */
  __pyx_codeobj__71 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_rms, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(11, 109, __pyx_L1_error)

  /* "include/Dbn2D.pyx":115
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */
  __pyx_codeobj__72 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_numEntries, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__72)) __PYX_ERR(11, 115, __pyx_L1_error)

  /* "include/Dbn2D.pyx":120
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */
  __pyx_codeobj__73 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_effNumEntries, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__73)) __PYX_ERR(11, 120, __pyx_L1_error)

  /* "include/Dbn2D.pyx":126
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */
  __pyx_codeobj__74 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_errW, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(11, 126, __pyx_L1_error)

  /* "include/Dbn2D.pyx":131
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */
  __pyx_codeobj__75 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_relErrW, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__75)) __PYX_ERR(11, 131, __pyx_L1_error)

  /* "include/Dbn2D.pyx":137
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */
  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumW, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(11, 137, __pyx_L1_error)

  /* "include/Dbn2D.pyx":142
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */
  __pyx_codeobj__77 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumW2, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__77)) __PYX_ERR(11, 142, __pyx_L1_error)

  /* "include/Dbn2D.pyx":147
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */
  __pyx_codeobj__78 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumWX, 147, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(11, 147, __pyx_L1_error)

  /* "include/Dbn2D.pyx":152
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d2ptr().sumWY()
 */
  __pyx_codeobj__79 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumWY, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__79)) __PYX_ERR(11, 152, __pyx_L1_error)

  /* "include/Dbn2D.pyx":157
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */
  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumWX2, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(11, 157, __pyx_L1_error)

  /* "include/Dbn2D.pyx":162
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */
  __pyx_codeobj__81 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumWY2, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__81)) __PYX_ERR(11, 162, __pyx_L1_error)

  /* "include/Dbn2D.pyx":167
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights xs * ys)"""
 *         return self.d2ptr().sumWXY()
 */
  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn2D_pyx, __pyx_n_s_sumWXY, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(11, 167, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__83 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__83)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Dbn3D.pyx":31
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */
  __pyx_codeobj__85 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_copy, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__85)) __PYX_ERR(12, 31, __pyx_L1_error)

  /* "include/Dbn3D.pyx":35
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, z, weight=1.0) -> None
 */
  __pyx_tuple__86 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_z, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__86)) __PYX_ERR(12, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__86);
  __Pyx_GIVEREF(__pyx_tuple__86);
  __pyx_codeobj__87 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_fill, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__87)) __PYX_ERR(12, 35, __pyx_L1_error)

  /* "include/Dbn3D.pyx":44
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_reset, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(12, 44, __pyx_L1_error)

  /* "include/Dbn3D.pyx":52
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__89 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_scaleW, 52, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__89)) __PYX_ERR(12, 52, __pyx_L1_error)

  /* "include/Dbn3D.pyx":60
 *         self.d3ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_scaleX, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(12, 60, __pyx_L1_error)

  /* "include/Dbn3D.pyx":68
 *         self.d3ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_codeobj__91 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_scaleY, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(12, 68, __pyx_L1_error)

  /* "include/Dbn3D.pyx":76
 *         self.d3ptr().scaleY(y)
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__92 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_z); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(12, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__92);
  __Pyx_GIVEREF(__pyx_tuple__92);
  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_scaleZ, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(12, 76, __pyx_L1_error)

  /* "include/Dbn3D.pyx":84
 *         self.d3ptr().scaleZ(z)
 * 
 *     def scaleXYZ(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_tuple__94 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_z); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(12, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__94);
  __Pyx_GIVEREF(__pyx_tuple__94);
  __pyx_codeobj__95 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__94, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_scaleXYZ, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__95)) __PYX_ERR(12, 84, __pyx_L1_error)

  /* "include/Dbn3D.pyx":96
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),
 */
  __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_mean, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(12, 96, __pyx_L1_error)

  /* "include/Dbn3D.pyx":103
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),
 */
  __pyx_codeobj__97 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_variance, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__97)) __PYX_ERR(12, 103, __pyx_L1_error)

  /* "include/Dbn3D.pyx":110
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),
 */
  __pyx_codeobj__98 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_stdDev, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__98)) __PYX_ERR(12, 110, __pyx_L1_error)

  /* "include/Dbn3D.pyx":117
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),
 */
  __pyx_codeobj__99 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_stdErr, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(12, 117, __pyx_L1_error)

  /* "include/Dbn3D.pyx":124
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),
 */
  __pyx_codeobj__100 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_rms, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__100)) __PYX_ERR(12, 124, __pyx_L1_error)

  /* "include/Dbn3D.pyx":132
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */
  __pyx_codeobj__101 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_numEntries, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__101)) __PYX_ERR(12, 132, __pyx_L1_error)

  /* "include/Dbn3D.pyx":137
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */
  __pyx_codeobj__102 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_effNumEntries, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(12, 137, __pyx_L1_error)

  /* "include/Dbn3D.pyx":143
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */
  __pyx_codeobj__103 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_errW, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__103)) __PYX_ERR(12, 143, __pyx_L1_error)

  /* "include/Dbn3D.pyx":148
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */
  __pyx_codeobj__104 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_relErrW, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__104)) __PYX_ERR(12, 148, __pyx_L1_error)

  /* "include/Dbn3D.pyx":154
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */
  __pyx_codeobj__105 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumW, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(12, 154, __pyx_L1_error)

  /* "include/Dbn3D.pyx":159
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */
  __pyx_codeobj__106 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumW2, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__106)) __PYX_ERR(12, 159, __pyx_L1_error)

  /* "include/Dbn3D.pyx":164
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */
  __pyx_codeobj__107 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWX, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__107)) __PYX_ERR(12, 164, __pyx_L1_error)

  /* "include/Dbn3D.pyx":169
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d3ptr().sumWY()
 */
  __pyx_codeobj__108 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWY, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(12, 169, __pyx_L1_error)

  /* "include/Dbn3D.pyx":174
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs)"""
 *         return self.d3ptr().sumWZ()
 */
  __pyx_codeobj__109 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWZ, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__109)) __PYX_ERR(12, 174, __pyx_L1_error)

  /* "include/Dbn3D.pyx":179
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */
  __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWX2, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(12, 179, __pyx_L1_error)

  /* "include/Dbn3D.pyx":184
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */
  __pyx_codeobj__111 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWY2, 184, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__111)) __PYX_ERR(12, 184, __pyx_L1_error)

  /* "include/Dbn3D.pyx":189
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */
  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWZ2, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(12, 189, __pyx_L1_error)

  /* "include/Dbn3D.pyx":194
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * ys)"""
 *         return self.d3ptr().sumWXY()
 */
  __pyx_codeobj__113 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWXY, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__113)) __PYX_ERR(12, 194, __pyx_L1_error)

  /* "include/Dbn3D.pyx":199
 * 
 *     #@property
 *     def sumWXZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * zs)"""
 *         return self.d3ptr().sumWXZ()
 */
  __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWXZ, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(12, 199, __pyx_L1_error)

  /* "include/Dbn3D.pyx":204
 * 
 *     #@property
 *     def sumWYZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * zs)"""
 *         return self.d3ptr().sumWYZ()
 */
  __pyx_codeobj__115 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Dbn3D_pyx, __pyx_n_s_sumWYZ, 204, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__115)) __PYX_ERR(12, 204, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__117 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__117)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Counter.pyx":30
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the counter."""
 */
  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_reset, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(13, 30, __pyx_L1_error)

  /* "include/Counter.pyx":36
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Couner.
 *         Clone this Counter."""
 */
  __pyx_codeobj__119 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_clone, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__119)) __PYX_ERR(13, 36, __pyx_L1_error)

  /* "include/Counter.pyx":42
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */
  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_fill, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(13, 42, __pyx_L1_error)

  /* "include/Counter.pyx":49
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */
  __pyx_codeobj__121 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_numEntries, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__121)) __PYX_ERR(13, 49, __pyx_L1_error)

  /* "include/Counter.pyx":55
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 */
  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_effNumEntries, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(13, 55, __pyx_L1_error)

  /* "include/Counter.pyx":61
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_codeobj__123 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_sumW, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__123)) __PYX_ERR(13, 61, __pyx_L1_error)

  /* "include/Counter.pyx":67
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_sumW2, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(13, 67, __pyx_L1_error)

  /* "include/Counter.pyx":73
 * 
 *     #@property
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_codeobj__125 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_val, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__125)) __PYX_ERR(13, 73, __pyx_L1_error)

  /* "include/Counter.pyx":79
 * 
 *     #@property
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */
  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_err, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(13, 79, __pyx_L1_error)

  /* "include/Counter.pyx":85
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 */
  __pyx_codeobj__127 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_relErr, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__127)) __PYX_ERR(13, 85, __pyx_L1_error)

  /* "include/Counter.pyx":91
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 */
  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_scaleW, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(13, 91, __pyx_L1_error)

  /* "include/Counter.pyx":97
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */
  __pyx_tuple__129 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s1); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__129);
  __Pyx_GIVEREF(__pyx_tuple__129);
  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_mkScatter, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) __PYX_ERR(13, 97, __pyx_L1_error)

  /* "include/Counter.pyx":103
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter1D s1
 *         if not efficiency:
 */
  __pyx_tuple__131 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_other, __pyx_n_s_efficiency, __pyx_n_s_s1); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(13, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__131);
  __Pyx_GIVEREF(__pyx_tuple__131);
  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Counter_pyx, __pyx_n_s_divideBy, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(13, 103, __pyx_L1_error)
  __pyx_tuple__133 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(13, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__133);
  __Pyx_GIVEREF(__pyx_tuple__133);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__135 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__135)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Bin.pyx":14
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 *         Dimension of the fill space (should match containing Histo/Profile)"""
 */
  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Bin_pyx, __pyx_n_s_dim, 14, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(14, 14, __pyx_L1_error)

  /* "include/Bin.pyx":21
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The number of entries that have filled the bin.
 */
  __pyx_codeobj__137 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Bin_pyx, __pyx_n_s_numEntries, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__137)) __PYX_ERR(14, 21, __pyx_L1_error)

  /* "include/Bin.pyx":28
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The effective number of entries in the bin.
 */
  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Bin_pyx, __pyx_n_s_effNumEntries, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(14, 28, __pyx_L1_error)

  /* "include/Bin.pyx":38
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights: sum(weights).
 */
  __pyx_codeobj__139 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Bin_pyx, __pyx_n_s_sumW, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__139)) __PYX_ERR(14, 38, __pyx_L1_error)

  /* "include/Bin.pyx":45
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-squared: sum(weights * weights)
 */
  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Bin_pyx, __pyx_n_s_sumW2, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(14, 45, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__141 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__141)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */
  __pyx_codeobj__143 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xEdges, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__143)) __PYX_ERR(15, 45, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */
  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xMin, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(15, 49, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */
  __pyx_codeobj__145 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xMax, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__145)) __PYX_ERR(15, 53, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */
  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xMid, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(15, 57, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */
  __pyx_codeobj__147 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xWidth, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__147)) __PYX_ERR(15, 61, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */
  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xMean, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) __PYX_ERR(15, 65, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */
  __pyx_codeobj__149 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xFocus, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__149)) __PYX_ERR(15, 69, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */
  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xVariance, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) __PYX_ERR(15, 77, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */
  __pyx_codeobj__151 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xStdDev, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__151)) __PYX_ERR(15, 83, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */
  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xStdErr, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) __PYX_ERR(15, 89, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */
  __pyx_codeobj__153 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_xRMS, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__153)) __PYX_ERR(15, 95, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */
  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_sumWX, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) __PYX_ERR(15, 103, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */
  __pyx_codeobj__155 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_sumWX2, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__155)) __PYX_ERR(15, 109, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn1D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn1D. Merge this bin with another of the
 */
  __pyx_tuple__156 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_other); if (unlikely(!__pyx_tuple__156)) __PYX_ERR(15, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__156);
  __Pyx_GIVEREF(__pyx_tuple__156);
  __pyx_codeobj__157 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn1D_py, __pyx_n_s_merge, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__157)) __PYX_ERR(15, 115, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__159 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__159)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */
  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xEdges, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) __PYX_ERR(16, 45, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */
  __pyx_codeobj__161 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xMin, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__161)) __PYX_ERR(16, 49, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */
  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xMax, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) __PYX_ERR(16, 53, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */
  __pyx_codeobj__163 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xMid, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__163)) __PYX_ERR(16, 57, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */
  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xWidth, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) __PYX_ERR(16, 61, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */
  __pyx_codeobj__165 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xMean, 65, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__165)) __PYX_ERR(16, 65, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */
  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xFocus, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) __PYX_ERR(16, 69, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */
  __pyx_codeobj__167 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xVariance, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__167)) __PYX_ERR(16, 77, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */
  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xStdDev, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) __PYX_ERR(16, 83, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */
  __pyx_codeobj__169 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xStdErr, 89, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__169)) __PYX_ERR(16, 89, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */
  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_xRMS, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) __PYX_ERR(16, 95, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */
  __pyx_codeobj__171 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_sumWX, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__171)) __PYX_ERR(16, 103, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */
  __pyx_codeobj__172 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_sumWX2, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__172)) __PYX_ERR(16, 109, __pyx_L1_error)

  /* "include/generated/Bin1D_Dbn2D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn2D. Merge this bin with another of the
 */
  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin1D_Dbn2D_py, __pyx_n_s_merge, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) __PYX_ERR(16, 115, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__174 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__174)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/HistoBin1D.pyx":30
 * 
 *     #@property
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.area <==> b.sumW
 */
  __pyx_codeobj__176 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin1D_pyx, __pyx_n_s_area, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__176)) __PYX_ERR(17, 30, __pyx_L1_error)

  /* "include/HistoBin1D.pyx":40
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.height <==> b.area / b.width
 */
  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin1D_pyx, __pyx_n_s_height, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) __PYX_ERR(17, 40, __pyx_L1_error)

  /* "include/HistoBin1D.pyx":50
 * 
 *     #@property
 *     def areaErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error computed using binomial statistics on squared sum of bin
 */
  __pyx_codeobj__178 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin1D_pyx, __pyx_n_s_areaErr, 50, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__178)) __PYX_ERR(17, 50, __pyx_L1_error)

  /* "include/HistoBin1D.pyx":58
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Height error - scales the s.areaError by the reciprocal of the
 */
  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin1D_pyx, __pyx_n_s_heightErr, 58, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) __PYX_ERR(17, 58, __pyx_L1_error)

  /* "include/HistoBin1D.pyx":66
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Relative error - same for either area or height interpretations.
 */
  __pyx_codeobj__180 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin1D_pyx, __pyx_n_s_relErr, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__180)) __PYX_ERR(17, 66, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__182 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__182)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":43
 * 
 * 
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the y-values that have filled the bin."""
 *         return self.pb1ptr().mean()
 */
  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_mean, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) __PYX_ERR(18, 43, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":47
 *         return self.pb1ptr().mean()
 * 
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """The variance of the y-values that have filled the bin."""
 *         return self.pb1ptr().variance()
 */
  __pyx_codeobj__184 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_variance, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__184)) __PYX_ERR(18, 47, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":51
 *         return self.pb1ptr().variance()
 * 
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """The standard deviation of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdDev()
 */
  __pyx_codeobj__185 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_stdDev, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__185)) __PYX_ERR(18, 51, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":55
 *         return self.pb1ptr().stdDev()
 * 
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """The standard error of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdErr()
 */
  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_stdErr, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) __PYX_ERR(18, 55, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":59
 *         return self.pb1ptr().stdErr()
 * 
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """The RMS of the y-values that have filled the bin."""
 *         return self.pb1ptr().rms()
 */
  __pyx_codeobj__187 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_rms, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__187)) __PYX_ERR(18, 59, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":64
 * 
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.pb1ptr().sumWY()
 */
  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_sumWY, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) __PYX_ERR(18, 64, __pyx_L1_error)

  /* "include/ProfileBin1D.pyx":68
 *         return self.pb1ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.pb1ptr().sumWY2()
 */
  __pyx_codeobj__189 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin1D_pyx, __pyx_n_s_sumWY2, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__189)) __PYX_ERR(18, 68, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__191 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__191)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":26
 * 
 *     #@property
 *     def type(self):             # <<<<<<<<<<<<<<
 *         "String identifier for this type"
 *         return self.aoptr().type()
 */
  __pyx_codeobj__192 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_type, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__192)) __PYX_ERR(1, 26, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":31
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()
 */
  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_dim, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) __PYX_ERR(1, 31, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":36
 * 
 *     #@property
 *     def annotations(self):             # <<<<<<<<<<<<<<
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 */
  __pyx_tuple__194 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_a); if (unlikely(!__pyx_tuple__194)) __PYX_ERR(1, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__194);
  __Pyx_GIVEREF(__pyx_tuple__194);
  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotations, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) __PYX_ERR(1, 36, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */
  __pyx_tuple__196 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__196)) __PYX_ERR(1, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__196);
  __Pyx_GIVEREF(__pyx_tuple__196);
  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotationsDict, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) __PYX_ERR(1, 42, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":48
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())
 * 
 *     def annotation(self, k, default=None):             # <<<<<<<<<<<<<<
 *         """Get annotation k from this object (falling back to default if not set).
 * 
 */
  __pyx_tuple__198 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_k, __pyx_n_s_default, __pyx_n_s_rtn); if (unlikely(!__pyx_tuple__198)) __PYX_ERR(1, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__198);
  __Pyx_GIVEREF(__pyx_tuple__198);
  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_annotation, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(1, 48, __pyx_L1_error)
  __pyx_tuple__200 = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(1, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__200);
  __Pyx_GIVEREF(__pyx_tuple__200);

  /* "include/AnalysisObject.pyx":61
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,
 */
  __pyx_tuple__201 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_k, __pyx_n_s_v); if (unlikely(!__pyx_tuple__201)) __PYX_ERR(1, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__201);
  __Pyx_GIVEREF(__pyx_tuple__201);
  __pyx_codeobj__202 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__201, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setAnnotation, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__202)) __PYX_ERR(1, 61, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":66
 *                                    <string>util._autostr(v))
 * 
 *     def hasAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)
 */
  __pyx_tuple__203 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_k); if (unlikely(!__pyx_tuple__203)) __PYX_ERR(1, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__203);
  __Pyx_GIVEREF(__pyx_tuple__203);
  __pyx_codeobj__204 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_hasAnnotation, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__204)) __PYX_ERR(1, 66, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":70
 *         return self.aoptr().hasAnnotation(<string>k)
 * 
 *     def rmAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)
 */
  __pyx_codeobj__205 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__203, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_rmAnnotation, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(1, 70, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":74
 *         self.aoptr().rmAnnotation(<string>k)
 * 
 *     def clearAnnotations(self):             # <<<<<<<<<<<<<<
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()
 */
  __pyx_codeobj__206 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_clearAnnotations, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__206)) __PYX_ERR(1, 74, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":79
 * 
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         """A human readable representation of this object."""
 *         try:
 */
  __pyx_tuple__207 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_StringIO, __pyx_n_s_f); if (unlikely(!__pyx_tuple__207)) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__207);
  __Pyx_GIVEREF(__pyx_tuple__207);
  __pyx_codeobj__208 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__207, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_dump, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__208)) __PYX_ERR(1, 79, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":92
 * 
 *     #@property
 *     def name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 */
  __pyx_codeobj__209 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_name_2, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(1, 92, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":99
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_codeobj__210 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_path, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__210)) __PYX_ERR(1, 99, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":106
 *         return self.aoptr().path()
 * 
 *     def setPath(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_tuple__211 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_path); if (unlikely(!__pyx_tuple__211)) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__211);
  __Pyx_GIVEREF(__pyx_tuple__211);
  __pyx_codeobj__212 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__211, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setPath, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__212)) __PYX_ERR(1, 106, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":125
 * 
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */
  __pyx_codeobj__213 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_title, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(1, 125, __pyx_L1_error)

  /* "include/AnalysisObject.pyx":131
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */
  __pyx_tuple__214 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_title); if (unlikely(!__pyx_tuple__214)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__214);
  __Pyx_GIVEREF(__pyx_tuple__214);
  __pyx_codeobj__215 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_AnalysisObject_pyx, __pyx_n_s_setTitle, 131, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(1, 131, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__216 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__216)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Histo1D.pyx":42
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_tuple__218 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__218);
  __Pyx_GIVEREF(__pyx_tuple__218);
  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_init2, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(2, 42, __pyx_L1_error)
  __pyx_tuple__220 = PyTuple_Pack(2, __pyx_kp_s__2, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__220);
  __Pyx_GIVEREF(__pyx_tuple__220);

  /* "include/Histo1D.pyx":48
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */
  __pyx_tuple__221 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_bins_or_edges, __pyx_n_s_path, __pyx_n_s_title, __pyx_n_s_edges, __pyx_n_s_bins, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__221)) __PYX_ERR(2, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__221);
  __Pyx_GIVEREF(__pyx_tuple__221);
  __pyx_codeobj__222 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__221, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_init3, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__222)) __PYX_ERR(2, 48, __pyx_L1_error)

  /* "include/Histo1D.pyx":63
 *             self.addBins(bins)
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_tuple__223 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_nbins, __pyx_n_s_low, __pyx_n_s_high, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__223)) __PYX_ERR(2, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__223);
  __Pyx_GIVEREF(__pyx_tuple__223);
  __pyx_codeobj__224 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__223, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_init5, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__224)) __PYX_ERR(2, 63, __pyx_L1_error)

  /* "include/Histo1D.pyx":88
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_codeobj__225 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_reset, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(2, 88, __pyx_L1_error)

  /* "include/Histo1D.pyx":94
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo1D.
 *         Clone this Histo1D."""
 */
  __pyx_codeobj__226 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_clone, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__226)) __PYX_ERR(2, 94, __pyx_L1_error)

  /* "include/Histo1D.pyx":100
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,[w]) -> None.
 *         Fill with given x value and optional weight."""
 */
  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_fill, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(2, 100, __pyx_L1_error)

  /* "include/Histo1D.pyx":106
 * 
 * 
 *     def fillBin(self, size_t ix, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,[w]) -> None.
 *         Fill bin ix and optional weight."""
 */
  __pyx_tuple__228 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ix, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__228);
  __Pyx_GIVEREF(__pyx_tuple__228);
  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__228, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_fillBin, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(2, 106, __pyx_L1_error)

  /* "include/Histo1D.pyx":112
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the total distribution."""
 */
  __pyx_codeobj__230 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_totalDbn, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__230)) __PYX_ERR(2, 112, __pyx_L1_error)

  /* "include/Histo1D.pyx":117
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the underflow distribution."""
 */
  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_underflow, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(2, 117, __pyx_L1_error)

  /* "include/Histo1D.pyx":122
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the overflow distribution."""
 */
  __pyx_codeobj__232 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_overflow, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__232)) __PYX_ERR(2, 122, __pyx_L1_error)

  /* "include/Histo1D.pyx":128
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */
  __pyx_tuple__233 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_includeoverflows); if (unlikely(!__pyx_tuple__233)) __PYX_ERR(2, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__233);
  __Pyx_GIVEREF(__pyx_tuple__233);
  __pyx_codeobj__234 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_integral, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__234)) __PYX_ERR(2, 128, __pyx_L1_error)
  __pyx_tuple__235 = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_tuple__235)) __PYX_ERR(2, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__235);
  __Pyx_GIVEREF(__pyx_tuple__235);

  /* "include/Histo1D.pyx":133
 *         return self.h1ptr().integral(includeoverflows)
 * 
 *     def integralRange(self, int ia, int ib):             # <<<<<<<<<<<<<<
 *         """(int, int) -> float
 *         Integral between bins ia..ib inclusive"""
 */
  __pyx_tuple__236 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ia, __pyx_n_s_ib); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(2, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__236);
  __Pyx_GIVEREF(__pyx_tuple__236);
  __pyx_codeobj__237 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_integralRange, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(2, 133, __pyx_L1_error)

  /* "include/Histo1D.pyx":138
 *         return self.h1ptr().integralRange(ia, ib)
 * 
 *     def integralTo(self, int ia, includeunderflow=True):             # <<<<<<<<<<<<<<
 *         """(int, [bool]) -> float
 *         Integral up to bin ia inclusive, optionally excluding the underflow"""
 */
  __pyx_tuple__238 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ia, __pyx_n_s_includeunderflow); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(2, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__238);
  __Pyx_GIVEREF(__pyx_tuple__238);
  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__238, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_integralTo, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(2, 138, __pyx_L1_error)

  /* "include/Histo1D.pyx":144
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_codeobj__240 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_numEntries, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__240)) __PYX_ERR(2, 144, __pyx_L1_error)

  /* "include/Histo1D.pyx":149
 *         return self.h1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows."""
 */
  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_effNumEntries, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(2, 149, __pyx_L1_error)

  /* "include/Histo1D.pyx":154
 *         return self.h1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__242 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_sumW, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__242)) __PYX_ERR(2, 154, __pyx_L1_error)

  /* "include/Histo1D.pyx":159
 *         return self.h1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_sumW2, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(2, 159, __pyx_L1_error)

  /* "include/Histo1D.pyx":165
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__244 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMean, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__244)) __PYX_ERR(2, 165, __pyx_L1_error)

  /* "include/Histo1D.pyx":170
 *         return self.h1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__245 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xVariance, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(2, 170, __pyx_L1_error)

  /* "include/Histo1D.pyx":175
 *         return self.h1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__246 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xStdDev, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__246)) __PYX_ERR(2, 175, __pyx_L1_error)

  /* "include/Histo1D.pyx":180
 *         return self.h1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__247 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xStdErr, 180, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(2, 180, __pyx_L1_error)

  /* "include/Histo1D.pyx":185
 *         return self.h1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__248 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xRMS, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__248)) __PYX_ERR(2, 185, __pyx_L1_error)

  /* "include/Histo1D.pyx":191
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_codeobj__249 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_scaleW, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(2, 191, __pyx_L1_error)

  /* "include/Histo1D.pyx":196
 *         self.h1ptr().scaleW(w)
 * 
 *     def normalize(self, normto=1.0, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """ (float, bool) -> None.
 *         Normalize the histogram."""
 */
  __pyx_tuple__250 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_normto, __pyx_n_s_includeoverflows); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__250);
  __Pyx_GIVEREF(__pyx_tuple__250);
  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__250, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_normalize, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(2, 196, __pyx_L1_error)
  __pyx_tuple__252 = PyTuple_Pack(2, __pyx_float_1_0, Py_True); if (unlikely(!__pyx_tuple__252)) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__252);
  __Pyx_GIVEREF(__pyx_tuple__252);

  /* "include/Histo1D.pyx":202
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h1ptr().xMin()
 */
  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMin, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(2, 202, __pyx_L1_error)

  /* "include/Histo1D.pyx":206
 *         return self.h1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h1ptr().xMax()
 */
  __pyx_codeobj__254 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMax, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__254)) __PYX_ERR(2, 206, __pyx_L1_error)

  /* "include/Histo1D.pyx":210
 *         return self.h1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_numBins, 210, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(2, 210, __pyx_L1_error)

  /* "include/Histo1D.pyx":215
 *         return self.h1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of x-axis bins (not including overflows)."""
 */
  __pyx_codeobj__256 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_numBinsX, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__256)) __PYX_ERR(2, 215, __pyx_L1_error)

  /* "include/Histo1D.pyx":220
 *         return self.h1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_bins, 220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(2, 220, __pyx_L1_error)

  /* "include/Histo1D.pyx":224
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin (equivalent to bins[i]"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h1ptr().numBins())
 */
  __pyx_tuple__258 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_i); if (unlikely(!__pyx_tuple__258)) __PYX_ERR(2, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__258);
  __Pyx_GIVEREF(__pyx_tuple__258);
  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_bin, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(2, 224, __pyx_L1_error)

  /* "include/Histo1D.pyx":229
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.h1ptr().binIndexAt(x)
 */
  __pyx_codeobj__260 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_binIndexAt, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__260)) __PYX_ERR(2, 229, __pyx_L1_error)

  /* "include/Histo1D.pyx":233
 *         return self.h1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_codeobj__261 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_binAt, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(2, 233, __pyx_L1_error)

  /* "include/Histo1D.pyx":240
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """(low, high) -> None.
 *         Add a bin."""
 */
  __pyx_tuple__262 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_low, __pyx_n_s_high); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(2, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__262);
  __Pyx_GIVEREF(__pyx_tuple__262);
  __pyx_codeobj__263 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBin, 240, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(2, 240, __pyx_L1_error)

  /* "include/Histo1D.pyx":245
 *         self.h1ptr().addBin(low, high)
 * 
 *     def addBins(self, edges_or_bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_tuple__264 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_edges_or_bins, __pyx_n_s_arg); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(2, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__264);
  __Pyx_GIVEREF(__pyx_tuple__264);
  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__264, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBins, 245, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(2, 245, __pyx_L1_error)

  /* "include/Histo1D.pyx":254
 *                        self.__addBins_bins], arg)
 * 
 *     def __addBins_edges(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] cedges
 *         for edge in edges:
 */
  __pyx_tuple__266 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_edges, __pyx_n_s_cedges, __pyx_n_s_edge); if (unlikely(!__pyx_tuple__266)) __PYX_ERR(2, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__266);
  __Pyx_GIVEREF(__pyx_tuple__266);
  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__266, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBins_edges, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(2, 254, __pyx_L1_error)

  /* "include/Histo1D.pyx":261
 *             self.h1ptr().addBins(cedges)
 * 
 *     def __addBins_bins(self, bins):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 */
  __pyx_tuple__268 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_bins, __pyx_n_s_b); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(2, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__268);
  __Pyx_GIVEREF(__pyx_tuple__268);
  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__268, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBins_bins, 261, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(2, 261, __pyx_L1_error)

  /* "include/Histo1D.pyx":264
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 *     def __addBins_points(self, points):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 */
  __pyx_tuple__270 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_points, __pyx_n_s_p); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(2, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__270);
  __Pyx_GIVEREF(__pyx_tuple__270);
  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__270, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBins_points, 264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(2, 264, __pyx_L1_error)

  /* "include/Histo1D.pyx":267
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 *     def __addBins_tuples(self, tuples):             # <<<<<<<<<<<<<<
 *         cdef double a, b
 *         for a, b in tuples:
 */
  __pyx_tuple__272 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tuples, __pyx_n_s_a, __pyx_n_s_b); if (unlikely(!__pyx_tuple__272)) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__272);
  __Pyx_GIVEREF(__pyx_tuple__272);
  __pyx_codeobj__273 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__272, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_addBins_tuples, 267, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(2, 267, __pyx_L1_error)

  /* "include/Histo1D.pyx":273
 * 
 * 
 *     def mergeBins(self, ia, ib):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */
  __pyx_codeobj__274 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__236, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_mergeBins, 273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__274)) __PYX_ERR(2, 273, __pyx_L1_error)

  /* "include/Histo1D.pyx":278
 *         self.h1ptr().mergeBins(ia, ib)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */
  __pyx_tuple__275 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_n, __pyx_n_s_begin, __pyx_n_s_end); if (unlikely(!__pyx_tuple__275)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__275);
  __Pyx_GIVEREF(__pyx_tuple__275);
  __pyx_codeobj__276 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_rebinBy, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__276)) __PYX_ERR(2, 278, __pyx_L1_error)
  __pyx_tuple__277 = PyTuple_Pack(2, __pyx_int_0, Py_None); if (unlikely(!__pyx_tuple__277)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__277);
  __Pyx_GIVEREF(__pyx_tuple__277);

  /* "include/Histo1D.pyx":285
 *         self.h1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */
  __pyx_tuple__278 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_edges); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(2, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__278);
  __Pyx_GIVEREF(__pyx_tuple__278);
  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_rebinTo, 285, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(2, 285, __pyx_L1_error)

  /* "include/Histo1D.pyx":290
 *         self.h1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */
  __pyx_tuple__280 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_arg, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__280)) __PYX_ERR(2, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__280);
  __Pyx_GIVEREF(__pyx_tuple__280);
  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__280, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_rebin, 290, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(2, 290, __pyx_L1_error)

  /* "include/Histo1D.pyx":299
 * 
 * 
 *     def mkScatter(self, usefocus=False, binwidthdiv=True, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Histo1D to a Scatter2D, with optional argument to control the x-positions
 */
  __pyx_tuple__282 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_usefocus, __pyx_n_s_binwidthdiv, __pyx_n_s_uflow_binwidth, __pyx_n_s_oflow_binwidth, __pyx_n_s_s2); if (unlikely(!__pyx_tuple__282)) __PYX_ERR(2, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__282);
  __Pyx_GIVEREF(__pyx_tuple__282);
  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__282, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_mkScatter, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(2, 299, __pyx_L1_error)
  __pyx_tuple__284 = PyTuple_Pack(4, Py_False, Py_True, __pyx_int_neg_1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__284)) __PYX_ERR(2, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__284);
  __Pyx_GIVEREF(__pyx_tuple__284);

  /* "include/Histo1D.pyx":308
 * 
 * 
 *     def toIntegral(self, efficiency=False, includeunderflow=True, includeoverflow=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_tuple__285 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_efficiency, __pyx_n_s_includeunderflow, __pyx_n_s_includeoverflow, __pyx_n_s_s); if (unlikely(!__pyx_tuple__285)) __PYX_ERR(2, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__285);
  __Pyx_GIVEREF(__pyx_tuple__285);
  __pyx_codeobj__286 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__285, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_toIntegral, 308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__286)) __PYX_ERR(2, 308, __pyx_L1_error)
  __pyx_tuple__287 = PyTuple_Pack(3, Py_False, Py_True, Py_True); if (unlikely(!__pyx_tuple__287)) __PYX_ERR(2, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__287);
  __Pyx_GIVEREF(__pyx_tuple__287);

  /* "include/Histo1D.pyx":325
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(self, Histo1D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo1D -> Scatter2D
 * 
 */
  __pyx_tuple__288 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_h, __pyx_n_s_efficiency, __pyx_n_s_s); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(2, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__288);
  __Pyx_GIVEREF(__pyx_tuple__288);
  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__288, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_divideBy, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(2, 325, __pyx_L1_error)

  /* "include/Histo1D.pyx":416
 *     #     return [b.sumW for b in self.bins]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_tuple__290 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs, __pyx_n_s_numpy); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(2, 416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__290);
  __Pyx_GIVEREF(__pyx_tuple__290);
  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_mknp, 416, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(2, 416, __pyx_L1_error)

  /* "include/Histo1D.pyx":423
 *             return xs
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.h1ptr().xEdges())
 */
  __pyx_codeobj__292 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xEdges, 423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__292)) __PYX_ERR(2, 423, __pyx_L1_error)

  /* "include/Histo1D.pyx":427
 *         return self._mknp(self.h1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h1ptr().xWidths())
 */
  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xWidths, 427, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(2, 427, __pyx_L1_error)

  /* "include/Histo1D.pyx":431
 *         return self._mknp(self.h1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */
  __pyx_tuple__294 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_b); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(2, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__294);
  __Pyx_GIVEREF(__pyx_tuple__294);
  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMins, 431, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(2, 431, __pyx_L1_error)

  /* "include/Histo1D.pyx":435
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */
  __pyx_codeobj__296 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMaxs, 435, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__296)) __PYX_ERR(2, 435, __pyx_L1_error)

  /* "include/Histo1D.pyx":439
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */
  __pyx_codeobj__297 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMids, 439, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(2, 439, __pyx_L1_error)

  /* "include/Histo1D.pyx":443
 *         return self._mknp([b.xMid() for b in self.bins()])
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_codeobj__298 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xFoci, 443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__298)) __PYX_ERR(2, 443, __pyx_L1_error)

  /* "include/Histo1D.pyx":447
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */
  __pyx_tuple__299 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_foci); if (unlikely(!__pyx_tuple__299)) __PYX_ERR(2, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__299);
  __Pyx_GIVEREF(__pyx_tuple__299);
  __pyx_codeobj__300 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__299, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xVals, 447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__300)) __PYX_ERR(2, 447, __pyx_L1_error)

  /* "include/Histo1D.pyx":450
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */
  __pyx_tuple__301 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_foci, __pyx_n_s_b); if (unlikely(!__pyx_tuple__301)) __PYX_ERR(2, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__301);
  __Pyx_GIVEREF(__pyx_tuple__301);
  __pyx_codeobj__302 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__301, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xErrs, 450, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__302)) __PYX_ERR(2, 450, __pyx_L1_error)

  /* "include/Histo1D.pyx":456
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMin, 456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(2, 456, __pyx_L1_error)

  /* "include/Histo1D.pyx":460
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_codeobj__304 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_xMax, 460, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__304)) __PYX_ERR(2, 460, __pyx_L1_error)

  /* "include/Histo1D.pyx":465
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_tuple__305 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_rtn, __pyx_n_s_b); if (unlikely(!__pyx_tuple__305)) __PYX_ERR(2, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__305);
  __Pyx_GIVEREF(__pyx_tuple__305);
  __pyx_codeobj__306 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__305, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_sumWs, 465, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__306)) __PYX_ERR(2, 465, __pyx_L1_error)

  /* "include/Histo1D.pyx":470
 *         return rtn
 * 
 *     def heights(self):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         return self._mknp([b.height() for b in self.bins()])
 */
  __pyx_codeobj__307 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_heights, 470, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(2, 470, __pyx_L1_error)

  /* "include/Histo1D.pyx":474
 *         return self._mknp([b.height() for b in self.bins()])
 * 
 *     def areas(self):             # <<<<<<<<<<<<<<
 *         """All areas of the histo."""
 *         return self._mknp([b.area() for b in self.bins()])
 */
  __pyx_codeobj__308 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_areas, 474, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__308)) __PYX_ERR(2, 474, __pyx_L1_error)

  /* "include/Histo1D.pyx":478
 *         return self._mknp([b.area() for b in self.bins()])
 * 
 *     def yVals(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areas() if area else self.heights()
 * 
 */
  __pyx_tuple__309 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_area); if (unlikely(!__pyx_tuple__309)) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__309);
  __Pyx_GIVEREF(__pyx_tuple__309);
  __pyx_codeobj__310 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__309, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yVals, 478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__310)) __PYX_ERR(2, 478, __pyx_L1_error)

  /* "include/Histo1D.pyx":482
 * 
 * 
 *     def heightErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */
  __pyx_codeobj__311 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_heightErrs, 482, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(2, 482, __pyx_L1_error)

  /* "include/Histo1D.pyx":489
 *         return self._mknp([b.heightErr() for b in self.bins()])
 * 
 *     def areaErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All area errors of the histo.
 * 
 */
  __pyx_codeobj__312 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_areaErrs, 489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__312)) __PYX_ERR(2, 489, __pyx_L1_error)

  /* "include/Histo1D.pyx":500
 *         return self._mknp([b.areaErr() for b in self.bins()])
 * 
 *     def relErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */
  __pyx_codeobj__313 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_relErrs, 500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__313)) __PYX_ERR(2, 500, __pyx_L1_error)

  /* "include/Histo1D.pyx":507
 *         return self._mknp([b.relErr() for b in self.bins()])
 * 
 *     def yErrs(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areaErrs() if area else self.heightErrs()
 * 
 */
  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__309, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yErrs, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(2, 507, __pyx_L1_error)

  /* "include/Histo1D.pyx":511
 * 
 * 
 *     def yMins(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */
  __pyx_tuple__315 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_area, __pyx_n_s_ys, __pyx_n_s_es, __pyx_n_s_y, __pyx_n_s_e); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(2, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__315);
  __Pyx_GIVEREF(__pyx_tuple__315);
  __pyx_codeobj__316 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__315, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yMins, 511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__316)) __PYX_ERR(2, 511, __pyx_L1_error)

  /* "include/Histo1D.pyx":516
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */
  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__315, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yMaxs, 516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(2, 516, __pyx_L1_error)

  /* "include/Histo1D.pyx":521
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */
  __pyx_codeobj__318 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yMin, 521, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__318)) __PYX_ERR(2, 521, __pyx_L1_error)

  /* "include/Histo1D.pyx":525
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */
  __pyx_codeobj__319 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo1D_pyx, __pyx_n_s_yMax, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__319)) __PYX_ERR(2, 525, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__321 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__321)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Profile1D.pyx":37
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__322 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_init2, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(19, 37, __pyx_L1_error)

  /* "include/Profile1D.pyx":44
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */
  __pyx_codeobj__323 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__221, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_init3, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__323)) __PYX_ERR(19, 44, __pyx_L1_error)

  /* "include/Profile1D.pyx":59
 *             self.addBins(bins)
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_tuple__324 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_nbins, __pyx_n_s_lower, __pyx_n_s_upper, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__324)) __PYX_ERR(19, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__324);
  __Pyx_GIVEREF(__pyx_tuple__324);
  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__324, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_init5, 59, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(19, 59, __pyx_L1_error)

  /* "include/Profile1D.pyx":82
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_codeobj__326 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_reset, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__326)) __PYX_ERR(19, 82, __pyx_L1_error)

  /* "include/Profile1D.pyx":87
 *         self.p1ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile1D.
 *         Clone this Profile1D."""
 */
  __pyx_codeobj__327 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_clone, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__327)) __PYX_ERR(19, 87, __pyx_L1_error)

  /* "include/Profile1D.pyx":93
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x & y values and optional weight."""
 */
  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_fill, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(19, 93, __pyx_L1_error)

  /* "include/Profile1D.pyx":98
 *         self.p1ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,y,[w]) -> None.
 *         Fill bin ix with y value and optional weight."""
 */
  __pyx_tuple__329 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_ix, __pyx_n_s_y, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__329)) __PYX_ERR(19, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__329);
  __Pyx_GIVEREF(__pyx_tuple__329);
  __pyx_codeobj__330 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__329, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_fillBin, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__330)) __PYX_ERR(19, 98, __pyx_L1_error)

  /* "include/Profile1D.pyx":104
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */
  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_totalDbn, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(19, 104, __pyx_L1_error)

  /* "include/Profile1D.pyx":110
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 */
  __pyx_codeobj__332 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_underflow, 110, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__332)) __PYX_ERR(19, 110, __pyx_L1_error)

  /* "include/Profile1D.pyx":116
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 */
  __pyx_codeobj__333 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_overflow, 116, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__333)) __PYX_ERR(19, 116, __pyx_L1_error)

  /* "include/Profile1D.pyx":123
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_numEntries, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(19, 123, __pyx_L1_error)

  /* "include/Profile1D.pyx":128
 *         return self.p1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */
  __pyx_codeobj__335 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_effNumEntries, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__335)) __PYX_ERR(19, 128, __pyx_L1_error)

  /* "include/Profile1D.pyx":133
 *         return self.p1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_codeobj__336 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_sumW, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__336)) __PYX_ERR(19, 133, __pyx_L1_error)

  /* "include/Profile1D.pyx":138
 *         return self.p1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_sumW2, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(19, 138, __pyx_L1_error)

  /* "include/Profile1D.pyx":144
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__338 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMean, 144, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__338)) __PYX_ERR(19, 144, __pyx_L1_error)

  /* "include/Profile1D.pyx":149
 *         return self.p1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__339 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xVariance, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__339)) __PYX_ERR(19, 149, __pyx_L1_error)

  /* "include/Profile1D.pyx":154
 *         return self.p1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__340 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xStdDev, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(19, 154, __pyx_L1_error)

  /* "include/Profile1D.pyx":159
 *         return self.p1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__341 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xStdErr, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__341)) __PYX_ERR(19, 159, __pyx_L1_error)

  /* "include/Profile1D.pyx":164
 *         return self.p1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xRMS, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(19, 164, __pyx_L1_error)

  /* "include/Profile1D.pyx":170
 * 
 * 
 *     def scaleW(self, double w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_codeobj__343 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_scaleW, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__343)) __PYX_ERR(19, 170, __pyx_L1_error)

  /* "include/Profile1D.pyx":175
 *         self.p1ptr().scaleW(w)
 * 
 *     def scaleY(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the y-direction (profiled value) in this histogram by the factor f."""
 */
  __pyx_tuple__344 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_f); if (unlikely(!__pyx_tuple__344)) __PYX_ERR(19, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__344);
  __Pyx_GIVEREF(__pyx_tuple__344);
  __pyx_codeobj__345 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_scaleY, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__345)) __PYX_ERR(19, 175, __pyx_L1_error)

  /* "include/Profile1D.pyx":181
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p1ptr().xMin()
 */
  __pyx_codeobj__346 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMin, 181, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(19, 181, __pyx_L1_error)

  /* "include/Profile1D.pyx":185
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p1ptr().xMax()
 */
  __pyx_codeobj__347 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMax, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__347)) __PYX_ERR(19, 185, __pyx_L1_error)

  /* "include/Profile1D.pyx":189
 *         return self.p1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_numBins, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(19, 189, __pyx_L1_error)

  /* "include/Profile1D.pyx":194
 *         return self.p1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins on the x-axis (not including overflows)."""
 */
  __pyx_codeobj__349 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_numBinsX, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__349)) __PYX_ERR(19, 194, __pyx_L1_error)

  /* "include/Profile1D.pyx":199
 *         return self.p1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_bins, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(19, 199, __pyx_L1_error)

  /* "include/Profile1D.pyx":203
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */
  __pyx_codeobj__351 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_bin, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__351)) __PYX_ERR(19, 203, __pyx_L1_error)

  /* "include/Profile1D.pyx":208
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.p1ptr().binIndexAt(x)
 */
  __pyx_codeobj__352 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_binIndexAt, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__352)) __PYX_ERR(19, 208, __pyx_L1_error)

  /* "include/Profile1D.pyx":212
 *         return self.p1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_binAt, 212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(19, 212, __pyx_L1_error)

  /* "include/Profile1D.pyx":219
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)
 */
  __pyx_codeobj__354 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_addBin, 219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__354)) __PYX_ERR(19, 219, __pyx_L1_error)

  /* "include/Profile1D.pyx":224
 *         return self
 * 
 *     def addBins(self, edges):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_tuple__355 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_edges, __pyx_n_s_cedges, __pyx_n_s_i); if (unlikely(!__pyx_tuple__355)) __PYX_ERR(19, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__355);
  __Pyx_GIVEREF(__pyx_tuple__355);
  __pyx_codeobj__356 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__355, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_addBins, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__356)) __PYX_ERR(19, 224, __pyx_L1_error)

  /* "include/Profile1D.pyx":234
 * 
 * 
 *     def mergeBins(self, a, b):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */
  __pyx_tuple__357 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_a, __pyx_n_s_b); if (unlikely(!__pyx_tuple__357)) __PYX_ERR(19, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__357);
  __Pyx_GIVEREF(__pyx_tuple__357);
  __pyx_codeobj__358 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__357, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_mergeBins, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__358)) __PYX_ERR(19, 234, __pyx_L1_error)

  /* "include/Profile1D.pyx":239
 *         self.p1ptr().mergeBins(a, b)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */
  __pyx_codeobj__359 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__275, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_rebinBy, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__359)) __PYX_ERR(19, 239, __pyx_L1_error)

  /* "include/Profile1D.pyx":246
 *         self.p1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */
  __pyx_codeobj__360 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__278, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_rebinTo, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__360)) __PYX_ERR(19, 246, __pyx_L1_error)

  /* "include/Profile1D.pyx":251
 *         self.p1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */
  __pyx_codeobj__361 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__280, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_rebin, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__361)) __PYX_ERR(19, 251, __pyx_L1_error)

  /* "include/Profile1D.pyx":260
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Profile1D to a Scatter2D, with y representing
 */
  __pyx_tuple__362 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_usefocus, __pyx_n_s_usestddev, __pyx_n_s_uflow_binwidth, __pyx_n_s_oflow_binwidth, __pyx_n_s_s2); if (unlikely(!__pyx_tuple__362)) __PYX_ERR(19, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__362);
  __Pyx_GIVEREF(__pyx_tuple__362);
  __pyx_codeobj__363 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__362, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_mkScatter, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__363)) __PYX_ERR(19, 260, __pyx_L1_error)
  __pyx_tuple__364 = PyTuple_Pack(4, Py_False, Py_False, __pyx_int_neg_1, __pyx_int_neg_1); if (unlikely(!__pyx_tuple__364)) __PYX_ERR(19, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__364);
  __Pyx_GIVEREF(__pyx_tuple__364);

  /* "include/Profile1D.pyx":269
 * 
 * 
 *     def divideBy(self, Profile1D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_tuple__365 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_h, __pyx_n_s_s); if (unlikely(!__pyx_tuple__365)) __PYX_ERR(19, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__365);
  __Pyx_GIVEREF(__pyx_tuple__365);
  __pyx_codeobj__366 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__365, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_divideBy, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__366)) __PYX_ERR(19, 269, __pyx_L1_error)

  /* "include/Profile1D.pyx":307
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__367 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_mknp, 307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__367)) __PYX_ERR(19, 307, __pyx_L1_error)

  /* "include/Profile1D.pyx":317
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.p1ptr().xEdges())
 */
  __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xEdges, 317, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__368)) __PYX_ERR(19, 317, __pyx_L1_error)

  /* "include/Profile1D.pyx":321
 *         return self._mknp(self.p1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p1ptr().xWidths())
 */
  __pyx_codeobj__369 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xWidths, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__369)) __PYX_ERR(19, 321, __pyx_L1_error)

  /* "include/Profile1D.pyx":325
 *         return self._mknp(self.p1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */
  __pyx_codeobj__370 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMins, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__370)) __PYX_ERR(19, 325, __pyx_L1_error)

  /* "include/Profile1D.pyx":329
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */
  __pyx_codeobj__371 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMaxs, 329, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__371)) __PYX_ERR(19, 329, __pyx_L1_error)

  /* "include/Profile1D.pyx":333
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */
  __pyx_codeobj__372 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMids, 333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__372)) __PYX_ERR(19, 333, __pyx_L1_error)

  /* "include/Profile1D.pyx":340
 *     ## Filling properties in x
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_codeobj__373 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xFoci, 340, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__373)) __PYX_ERR(19, 340, __pyx_L1_error)

  /* "include/Profile1D.pyx":344
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */
  __pyx_codeobj__374 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__299, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xVals, 344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__374)) __PYX_ERR(19, 344, __pyx_L1_error)

  /* "include/Profile1D.pyx":347
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */
  __pyx_codeobj__375 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__301, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xErrs, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__375)) __PYX_ERR(19, 347, __pyx_L1_error)

  /* "include/Profile1D.pyx":353
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_codeobj__376 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMin, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__376)) __PYX_ERR(19, 353, __pyx_L1_error)

  /* "include/Profile1D.pyx":357
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_codeobj__377 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_xMax, 357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__377)) __PYX_ERR(19, 357, __pyx_L1_error)

  /* "include/Profile1D.pyx":362
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_codeobj__378 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__305, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_sumWs, 362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__378)) __PYX_ERR(19, 362, __pyx_L1_error)

  /* "include/Profile1D.pyx":367
 *         return rtn
 * 
 *     def yMeans(self):             # <<<<<<<<<<<<<<
 *         """All y heights y means."""
 *         return self._mknp([b.mean() for b in self.bins()])
 */
  __pyx_codeobj__379 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yMeans, 367, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__379)) __PYX_ERR(19, 367, __pyx_L1_error)

  /* "include/Profile1D.pyx":371
 *         return self._mknp([b.mean() for b in self.bins()])
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self.yMeans()
 * 
 */
  __pyx_codeobj__380 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yVals, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__380)) __PYX_ERR(19, 371, __pyx_L1_error)

  /* "include/Profile1D.pyx":375
 * 
 * 
 *     def yStdErrs(self):             # <<<<<<<<<<<<<<
 *         """All standard errors on the y means."""
 *         return self._mknp([b.stdErr() for b in self.bins()])
 */
  __pyx_codeobj__381 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yStdErrs, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__381)) __PYX_ERR(19, 375, __pyx_L1_error)

  /* "include/Profile1D.pyx":379
 *         return self._mknp([b.stdErr() for b in self.bins()])
 * 
 *     def yStdDevs(self):             # <<<<<<<<<<<<<<
 *         """All standard deviations of the y distributions."""
 *         return self._mknp([b.stdDev() for b in self.bins()])
 */
  __pyx_codeobj__382 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__294, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yStdDevs, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__382)) __PYX_ERR(19, 379, __pyx_L1_error)

  /* "include/Profile1D.pyx":383
 *         return self._mknp([b.stdDev() for b in self.bins()])
 * 
 *     def yErrs(self, sd=False):             # <<<<<<<<<<<<<<
 *         return self.yStdDevs() if sd else self.yStdErrs()
 * 
 */
  __pyx_tuple__383 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_sd); if (unlikely(!__pyx_tuple__383)) __PYX_ERR(19, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__383);
  __Pyx_GIVEREF(__pyx_tuple__383);
  __pyx_codeobj__384 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yErrs, 383, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__384)) __PYX_ERR(19, 383, __pyx_L1_error)

  /* "include/Profile1D.pyx":387
 * 
 * 
 *     def yMins(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */
  __pyx_tuple__385 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_sd, __pyx_n_s_ys, __pyx_n_s_es, __pyx_n_s_y, __pyx_n_s_e); if (unlikely(!__pyx_tuple__385)) __PYX_ERR(19, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__385);
  __Pyx_GIVEREF(__pyx_tuple__385);
  __pyx_codeobj__386 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__385, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yMins, 387, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__386)) __PYX_ERR(19, 387, __pyx_L1_error)

  /* "include/Profile1D.pyx":392
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */
  __pyx_codeobj__387 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__385, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yMaxs, 392, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__387)) __PYX_ERR(19, 392, __pyx_L1_error)

  /* "include/Profile1D.pyx":397
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return min(self.yMins(sd))
 */
  __pyx_codeobj__388 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yMin, 397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__388)) __PYX_ERR(19, 397, __pyx_L1_error)

  /* "include/Profile1D.pyx":401
 *         return min(self.yMins(sd))
 * 
 *     def yMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs(sd))
 */
  __pyx_codeobj__389 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile1D_pyx, __pyx_n_s_yMax, 401, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__389)) __PYX_ERR(19, 401, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__390 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__390)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__391 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__391)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */
  __pyx_codeobj__392 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xEdges, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__392)) __PYX_ERR(20, 35, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */
  __pyx_codeobj__393 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yEdges, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__393)) __PYX_ERR(20, 42, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */
  __pyx_codeobj__394 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyEdges, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__394)) __PYX_ERR(20, 49, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */
  __pyx_codeobj__395 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xMin, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__395)) __PYX_ERR(20, 56, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */
  __pyx_codeobj__396 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yMin, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__396)) __PYX_ERR(20, 60, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */
  __pyx_codeobj__397 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyMin, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__397)) __PYX_ERR(20, 64, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */
  __pyx_codeobj__398 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xMax, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__398)) __PYX_ERR(20, 69, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */
  __pyx_codeobj__399 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yMax, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__399)) __PYX_ERR(20, 73, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */
  __pyx_codeobj__400 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyMax, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__400)) __PYX_ERR(20, 77, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */
  __pyx_codeobj__401 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xMid, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__401)) __PYX_ERR(20, 82, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */
  __pyx_codeobj__402 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yMid, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__402)) __PYX_ERR(20, 86, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */
  __pyx_codeobj__403 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyMid, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__403)) __PYX_ERR(20, 90, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */
  __pyx_codeobj__404 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xWidth, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__404)) __PYX_ERR(20, 95, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */
  __pyx_codeobj__405 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yWidth, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__405)) __PYX_ERR(20, 99, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */
  __pyx_codeobj__406 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyWidths, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__406)) __PYX_ERR(20, 103, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */
  __pyx_codeobj__407 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_area, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__407)) __PYX_ERR(20, 108, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */
  __pyx_codeobj__408 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xFocus, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__408)) __PYX_ERR(20, 113, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */
  __pyx_codeobj__409 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yFocus, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__409)) __PYX_ERR(20, 117, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */
  __pyx_codeobj__410 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyFocus, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__410)) __PYX_ERR(20, 121, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */
  __pyx_codeobj__411 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xMean, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__411)) __PYX_ERR(20, 126, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */
  __pyx_codeobj__412 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yMean, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__412)) __PYX_ERR(20, 129, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */
  __pyx_codeobj__413 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyMean, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__413)) __PYX_ERR(20, 132, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_codeobj__414 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xVariance, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__414)) __PYX_ERR(20, 136, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_codeobj__415 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yVariance, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__415)) __PYX_ERR(20, 139, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */
  __pyx_codeobj__416 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyVariance, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__416)) __PYX_ERR(20, 142, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */
  __pyx_codeobj__417 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xStdDev, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__417)) __PYX_ERR(20, 146, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */
  __pyx_codeobj__418 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yStdDev, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__418)) __PYX_ERR(20, 149, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */
  __pyx_codeobj__419 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyStdDev, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__419)) __PYX_ERR(20, 152, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */
  __pyx_codeobj__420 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xStdErr, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__420)) __PYX_ERR(20, 156, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */
  __pyx_codeobj__421 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yStdErr, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__421)) __PYX_ERR(20, 159, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */
  __pyx_codeobj__422 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyStdErr, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__422)) __PYX_ERR(20, 162, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */
  __pyx_codeobj__423 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xRMS, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__423)) __PYX_ERR(20, 166, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */
  __pyx_codeobj__424 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_yRMS, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__424)) __PYX_ERR(20, 169, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */
  __pyx_codeobj__425 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_xyRMS, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__425)) __PYX_ERR(20, 172, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */
  __pyx_codeobj__426 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_sumWX, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__426)) __PYX_ERR(20, 179, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */
  __pyx_codeobj__427 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_sumWY, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__427)) __PYX_ERR(20, 182, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */
  __pyx_codeobj__428 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_sumWXY, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__428)) __PYX_ERR(20, 185, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */
  __pyx_codeobj__429 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_sumWX2, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__429)) __PYX_ERR(20, 188, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */
  __pyx_codeobj__430 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_sumWY2, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__430)) __PYX_ERR(20, 191, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */
  __pyx_codeobj__431 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn2D_py, __pyx_n_s_adjacentTo, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__431)) __PYX_ERR(20, 199, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__432 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__432)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__433 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__433)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */
  __pyx_codeobj__434 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xEdges, 35, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__434)) __PYX_ERR(21, 35, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */
  __pyx_codeobj__435 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yEdges, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__435)) __PYX_ERR(21, 42, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */
  __pyx_codeobj__436 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyEdges, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__436)) __PYX_ERR(21, 49, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */
  __pyx_codeobj__437 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xMin, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__437)) __PYX_ERR(21, 56, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */
  __pyx_codeobj__438 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yMin, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__438)) __PYX_ERR(21, 60, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */
  __pyx_codeobj__439 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyMin, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__439)) __PYX_ERR(21, 64, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */
  __pyx_codeobj__440 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xMax, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__440)) __PYX_ERR(21, 69, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */
  __pyx_codeobj__441 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yMax, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__441)) __PYX_ERR(21, 73, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */
  __pyx_codeobj__442 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyMax, 77, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__442)) __PYX_ERR(21, 77, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */
  __pyx_codeobj__443 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xMid, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__443)) __PYX_ERR(21, 82, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */
  __pyx_codeobj__444 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yMid, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__444)) __PYX_ERR(21, 86, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */
  __pyx_codeobj__445 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyMid, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__445)) __PYX_ERR(21, 90, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */
  __pyx_codeobj__446 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xWidth, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__446)) __PYX_ERR(21, 95, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */
  __pyx_codeobj__447 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yWidth, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__447)) __PYX_ERR(21, 99, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */
  __pyx_codeobj__448 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyWidths, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__448)) __PYX_ERR(21, 103, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */
  __pyx_codeobj__449 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_area, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__449)) __PYX_ERR(21, 108, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */
  __pyx_codeobj__450 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xFocus, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__450)) __PYX_ERR(21, 113, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */
  __pyx_codeobj__451 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yFocus, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__451)) __PYX_ERR(21, 117, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */
  __pyx_codeobj__452 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyFocus, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__452)) __PYX_ERR(21, 121, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */
  __pyx_codeobj__453 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xMean, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__453)) __PYX_ERR(21, 126, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */
  __pyx_codeobj__454 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yMean, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__454)) __PYX_ERR(21, 129, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */
  __pyx_codeobj__455 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyMean, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__455)) __PYX_ERR(21, 132, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_codeobj__456 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xVariance, 136, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__456)) __PYX_ERR(21, 136, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_codeobj__457 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yVariance, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__457)) __PYX_ERR(21, 139, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */
  __pyx_codeobj__458 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyVariance, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__458)) __PYX_ERR(21, 142, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */
  __pyx_codeobj__459 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xStdDev, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__459)) __PYX_ERR(21, 146, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */
  __pyx_codeobj__460 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yStdDev, 149, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__460)) __PYX_ERR(21, 149, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */
  __pyx_codeobj__461 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyStdDev, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__461)) __PYX_ERR(21, 152, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */
  __pyx_codeobj__462 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xStdErr, 156, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__462)) __PYX_ERR(21, 156, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */
  __pyx_codeobj__463 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yStdErr, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__463)) __PYX_ERR(21, 159, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */
  __pyx_codeobj__464 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyStdErr, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__464)) __PYX_ERR(21, 162, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */
  __pyx_codeobj__465 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xRMS, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__465)) __PYX_ERR(21, 166, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */
  __pyx_codeobj__466 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_yRMS, 169, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__466)) __PYX_ERR(21, 169, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */
  __pyx_codeobj__467 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_xyRMS, 172, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__467)) __PYX_ERR(21, 172, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */
  __pyx_codeobj__468 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_sumWX, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__468)) __PYX_ERR(21, 179, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */
  __pyx_codeobj__469 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_sumWY, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__469)) __PYX_ERR(21, 182, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */
  __pyx_codeobj__470 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_sumWXY, 185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__470)) __PYX_ERR(21, 185, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */
  __pyx_codeobj__471 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_sumWX2, 188, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__471)) __PYX_ERR(21, 188, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */
  __pyx_codeobj__472 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_sumWY2, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__472)) __PYX_ERR(21, 191, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn3D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */
  __pyx_codeobj__473 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__156, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_generated_Bin2D_Dbn3D_py, __pyx_n_s_adjacentTo, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__473)) __PYX_ERR(21, 199, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__474 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__474)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__475 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__475)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":20
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().mean()
 * 
 */
  __pyx_codeobj__476 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_mean, 20, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__476)) __PYX_ERR(22, 20, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":24
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdDev()
 * 
 */
  __pyx_codeobj__477 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_stdDev, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__477)) __PYX_ERR(22, 24, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":28
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().variance()
 * 
 */
  __pyx_codeobj__478 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_variance, 28, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__478)) __PYX_ERR(22, 28, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":32
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdErr()
 * 
 */
  __pyx_codeobj__479 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_stdErr, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__479)) __PYX_ERR(22, 32, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":36
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().rms()
 * 
 */
  __pyx_codeobj__480 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_rms, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__480)) __PYX_ERR(22, 36, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":40
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ()
 * 
 */
  __pyx_codeobj__481 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_sumWZ, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__481)) __PYX_ERR(22, 40, __pyx_L1_error)

  /* "include/ProfileBin2D.pyx":44
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ2()
 * 
 */
  __pyx_codeobj__482 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_ProfileBin2D_pyx, __pyx_n_s_sumWZ2, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__482)) __PYX_ERR(22, 44, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__483 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__483)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__484 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__484)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/HistoBin2D.pyx":18
 * 
 *     #@property
 *     def volume(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volume()
 * 
 */
  __pyx_codeobj__485 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin2D_pyx, __pyx_n_s_volume, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__485)) __PYX_ERR(23, 18, __pyx_L1_error)

  /* "include/HistoBin2D.pyx":22
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().height()
 * 
 */
  __pyx_codeobj__486 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin2D_pyx, __pyx_n_s_height, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__486)) __PYX_ERR(23, 22, __pyx_L1_error)

  /* "include/HistoBin2D.pyx":26
 * 
 *     #@property
 *     def volumeErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volumeErr()
 * 
 */
  __pyx_codeobj__487 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin2D_pyx, __pyx_n_s_volumeErr, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__487)) __PYX_ERR(23, 26, __pyx_L1_error)

  /* "include/HistoBin2D.pyx":30
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().heightErr()
 * 
 */
  __pyx_codeobj__488 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin2D_pyx, __pyx_n_s_heightErr, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__488)) __PYX_ERR(23, 30, __pyx_L1_error)

  /* "include/HistoBin2D.pyx":34
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().relErr()
 * 
 */
  __pyx_codeobj__489 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_HistoBin2D_pyx, __pyx_n_s_relErr, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__489)) __PYX_ERR(23, 34, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__490 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__490)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__491 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__491)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Histo2D.pyx":36
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Histo2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__492 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_init2, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__492)) __PYX_ERR(3, 36, __pyx_L1_error)

  /* "include/Histo2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_tuple__493 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_xedges, __pyx_n_s_yedges, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__493)) __PYX_ERR(3, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__493);
  __Pyx_GIVEREF(__pyx_tuple__493);
  __pyx_codeobj__494 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_init4, 41, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__494)) __PYX_ERR(3, 41, __pyx_L1_error)

  /* "include/Histo2D.pyx":47
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_tuple__495 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_nxbins, __pyx_n_s_xlow, __pyx_n_s_xhigh, __pyx_n_s_nybins, __pyx_n_s_ylow, __pyx_n_s_yhigh, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__495)) __PYX_ERR(3, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__495);
  __Pyx_GIVEREF(__pyx_tuple__495);
  __pyx_codeobj__496 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_init8, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__496)) __PYX_ERR(3, 47, __pyx_L1_error)

  /* "include/Histo2D.pyx":67
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_codeobj__497 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_reset, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__497)) __PYX_ERR(3, 67, __pyx_L1_error)

  /* "include/Histo2D.pyx":72
 *         self.h2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo2D.
 *         Clone this Profile2D."""
 */
  __pyx_codeobj__498 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_clone, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__498)) __PYX_ERR(3, 72, __pyx_L1_error)

  /* "include/Histo2D.pyx":78
 * 
 * 
 *     def fill(self, double x, double y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x,y values and optional weight."""
 */
  __pyx_codeobj__499 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__59, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_fill, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__499)) __PYX_ERR(3, 78, __pyx_L1_error)

  /* "include/Histo2D.pyx":83
 *         self.h2ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t i, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,[w]) -> None.
 *         Fill bin i and optional weight."""
 */
  __pyx_tuple__500 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__500)) __PYX_ERR(3, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__500);
  __Pyx_GIVEREF(__pyx_tuple__500);
  __pyx_codeobj__501 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__500, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_fillBin, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__501)) __PYX_ERR(3, 83, __pyx_L1_error)

  /* "include/Histo2D.pyx":90
 * 
 *     #@property
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */
  __pyx_codeobj__502 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_totalDbn, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__502)) __PYX_ERR(3, 90, __pyx_L1_error)

  /* "include/Histo2D.pyx":102
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */
  __pyx_codeobj__503 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_integral, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__503)) __PYX_ERR(3, 102, __pyx_L1_error)

  /* "include/Histo2D.pyx":108
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding overflows."""
 */
  __pyx_codeobj__504 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_numEntries, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__504)) __PYX_ERR(3, 108, __pyx_L1_error)

  /* "include/Histo2D.pyx":113
 *         return self.h2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding overflows."""
 */
  __pyx_codeobj__505 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_effNumEntries, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__505)) __PYX_ERR(3, 113, __pyx_L1_error)

  /* "include/Histo2D.pyx":118
 *         return self.h2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_codeobj__506 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_sumW, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__506)) __PYX_ERR(3, 118, __pyx_L1_error)

  /* "include/Histo2D.pyx":123
 *         return self.h2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */
  __pyx_codeobj__507 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_sumW2, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__507)) __PYX_ERR(3, 123, __pyx_L1_error)

  /* "include/Histo2D.pyx":129
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__508 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMean, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__508)) __PYX_ERR(3, 129, __pyx_L1_error)

  /* "include/Histo2D.pyx":134
 *         return self.h2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__509 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMean, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__509)) __PYX_ERR(3, 134, __pyx_L1_error)

  /* "include/Histo2D.pyx":139
 *         return self.h2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__510 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xyMean, 139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__510)) __PYX_ERR(3, 139, __pyx_L1_error)

  /* "include/Histo2D.pyx":145
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__511 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xVariance, 145, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__511)) __PYX_ERR(3, 145, __pyx_L1_error)

  /* "include/Histo2D.pyx":150
 *         return self.h2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__512 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yVariance, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__512)) __PYX_ERR(3, 150, __pyx_L1_error)

  /* "include/Histo2D.pyx":155
 *         return self.h2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__513 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xyVariance, 155, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__513)) __PYX_ERR(3, 155, __pyx_L1_error)

  /* "include/Histo2D.pyx":161
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__514 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xStdDev, 161, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__514)) __PYX_ERR(3, 161, __pyx_L1_error)

  /* "include/Histo2D.pyx":166
 *         return self.h2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__515 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yStdDev, 166, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__515)) __PYX_ERR(3, 166, __pyx_L1_error)

  /* "include/Histo2D.pyx":171
 *         return self.h2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__516 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xyStdDev, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__516)) __PYX_ERR(3, 171, __pyx_L1_error)

  /* "include/Histo2D.pyx":177
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__517 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xStdErr, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__517)) __PYX_ERR(3, 177, __pyx_L1_error)

  /* "include/Histo2D.pyx":182
 *         return self.h2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__518 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yStdErr, 182, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__518)) __PYX_ERR(3, 182, __pyx_L1_error)

  /* "include/Histo2D.pyx":187
 *         return self.h2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__519 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xyStdErr, 187, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__519)) __PYX_ERR(3, 187, __pyx_L1_error)

  /* "include/Histo2D.pyx":193
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__520 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xRMS, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__520)) __PYX_ERR(3, 193, __pyx_L1_error)

  /* "include/Histo2D.pyx":198
 *         return self.h2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__521 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yRMS, 198, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__521)) __PYX_ERR(3, 198, __pyx_L1_error)

  /* "include/Histo2D.pyx":203
 *         return self.h2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__522 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xyRMS, 203, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__522)) __PYX_ERR(3, 203, __pyx_L1_error)

  /* "include/Histo2D.pyx":209
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_codeobj__523 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_scaleW, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__523)) __PYX_ERR(3, 209, __pyx_L1_error)

  /* "include/Histo2D.pyx":214
 *         self.h2ptr().scaleW(w)
 * 
 *     def normalize(self, double normto=1.0, bint includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """(float, bool) -> None.
 *         Normalize the histogram."""
 */
  __pyx_codeobj__524 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__250, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_normalize, 214, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__524)) __PYX_ERR(3, 214, __pyx_L1_error)

  /* "include/Histo2D.pyx":220
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h2ptr().xMin()
 */
  __pyx_codeobj__525 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMin, 220, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__525)) __PYX_ERR(3, 220, __pyx_L1_error)

  /* "include/Histo2D.pyx":224
 *         return self.h2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h2ptr().xMax()
 */
  __pyx_codeobj__526 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMax, 224, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__526)) __PYX_ERR(3, 224, __pyx_L1_error)

  /* "include/Histo2D.pyx":228
 *         return self.h2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.h2ptr().yMin()
 */
  __pyx_codeobj__527 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMin, 228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__527)) __PYX_ERR(3, 228, __pyx_L1_error)

  /* "include/Histo2D.pyx":232
 *         return self.h2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.h2ptr().yMax()
 */
  __pyx_codeobj__528 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMax, 232, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__528)) __PYX_ERR(3, 232, __pyx_L1_error)

  /* "include/Histo2D.pyx":237
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_codeobj__529 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_numBins, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__529)) __PYX_ERR(3, 237, __pyx_L1_error)

  /* "include/Histo2D.pyx":242
 *         return self.h2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */
  __pyx_codeobj__530 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_numBinsX, 242, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__530)) __PYX_ERR(3, 242, __pyx_L1_error)

  /* "include/Histo2D.pyx":247
 *         return self.h2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */
  __pyx_codeobj__531 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_numBinsY, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__531)) __PYX_ERR(3, 247, __pyx_L1_error)

  /* "include/Histo2D.pyx":253
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 */
  __pyx_codeobj__532 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_bins, 253, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__532)) __PYX_ERR(3, 253, __pyx_L1_error)

  /* "include/Histo2D.pyx":257
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h2ptr().numBins())
 */
  __pyx_codeobj__533 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_bin, 257, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__533)) __PYX_ERR(3, 257, __pyx_L1_error)

  /* "include/Histo2D.pyx":269
 *     #     return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.h2ptr().binIndexAt(x, y)
 */
  __pyx_codeobj__534 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_binIndexAt, 269, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__534)) __PYX_ERR(3, 269, __pyx_L1_error)

  /* "include/Histo2D.pyx":273
 *         return self.h2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_codeobj__535 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_binAt, 273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__535)) __PYX_ERR(3, 273, __pyx_L1_error)

  /* "include/Histo2D.pyx":281
 * 
 * 
 *     def addBin(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 */
  __pyx_tuple__536 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_xlow, __pyx_n_s_xhigh, __pyx_n_s_ylow, __pyx_n_s_yhigh); if (unlikely(!__pyx_tuple__536)) __PYX_ERR(3, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__536);
  __Pyx_GIVEREF(__pyx_tuple__536);
  __pyx_codeobj__537 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_addBin, 281, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__537)) __PYX_ERR(3, 281, __pyx_L1_error)

  /* "include/Histo2D.pyx":287
 *         return self
 * 
 *     def addBins(self, bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         cdef vector[c.HistoBin2D] cbins
 */
  __pyx_tuple__538 = PyTuple_Pack(9, __pyx_n_s_self, __pyx_n_s_bins, __pyx_n_s_cbins, __pyx_n_s_cbin, __pyx_n_s_elem, __pyx_n_s_xlow, __pyx_n_s_xhigh, __pyx_n_s_ylow, __pyx_n_s_yhigh); if (unlikely(!__pyx_tuple__538)) __PYX_ERR(3, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__538);
  __Pyx_GIVEREF(__pyx_tuple__538);
  __pyx_codeobj__539 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__538, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_addBins, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__539)) __PYX_ERR(3, 287, __pyx_L1_error)

  /* "include/Histo2D.pyx":319
 * 
 * 
 *     def mkScatter(self, usefocus=False, binareadiv=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Histo2D to a Scatter3D, with optional argument to control the positions
 */
  __pyx_tuple__540 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_usefocus, __pyx_n_s_binareadiv, __pyx_n_s_s3); if (unlikely(!__pyx_tuple__540)) __PYX_ERR(3, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__540);
  __Pyx_GIVEREF(__pyx_tuple__540);
  __pyx_codeobj__541 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__540, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_mkScatter, 319, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__541)) __PYX_ERR(3, 319, __pyx_L1_error)
  __pyx_tuple__542 = PyTuple_Pack(2, Py_False, Py_True); if (unlikely(!__pyx_tuple__542)) __PYX_ERR(3, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__542);
  __Pyx_GIVEREF(__pyx_tuple__542);

  /* "include/Histo2D.pyx":326
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Histo2D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo2D -> Scatter3D
 * 
 */
  __pyx_codeobj__543 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__288, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_divideBy, 326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__543)) __PYX_ERR(3, 326, __pyx_L1_error)

  /* "include/Histo2D.pyx":371
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__544 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_mknp, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__544)) __PYX_ERR(3, 371, __pyx_L1_error)

  /* "include/Histo2D.pyx":381
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.h2ptr().xEdges())
 */
  __pyx_codeobj__545 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xEdges, 381, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__545)) __PYX_ERR(3, 381, __pyx_L1_error)

  /* "include/Histo2D.pyx":385
 *         return self._mknp(self.h2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h2ptr().xWidths())
 */
  __pyx_codeobj__546 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xWidths, 385, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__546)) __PYX_ERR(3, 385, __pyx_L1_error)

  /* "include/Histo2D.pyx":389
 *         return self._mknp(self.h2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */
  __pyx_codeobj__547 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMin, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__547)) __PYX_ERR(3, 389, __pyx_L1_error)

  /* "include/Histo2D.pyx":393
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */
  __pyx_codeobj__548 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMax, 393, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__548)) __PYX_ERR(3, 393, __pyx_L1_error)

  /* "include/Histo2D.pyx":397
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */
  __pyx_tuple__549 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_unique, __pyx_n_s_asgrid, __pyx_n_s_rtn, __pyx_n_s_b); if (unlikely(!__pyx_tuple__549)) __PYX_ERR(3, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__549);
  __Pyx_GIVEREF(__pyx_tuple__549);
  __pyx_codeobj__550 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMins, 397, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__550)) __PYX_ERR(3, 397, __pyx_L1_error)
  __pyx_tuple__551 = PyTuple_Pack(2, Py_True, Py_False); if (unlikely(!__pyx_tuple__551)) __PYX_ERR(3, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__551);
  __Pyx_GIVEREF(__pyx_tuple__551);

  /* "include/Histo2D.pyx":407
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__552 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMaxs, 407, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__552)) __PYX_ERR(3, 407, __pyx_L1_error)

  /* "include/Histo2D.pyx":417
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_codeobj__553 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xMids, 417, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__553)) __PYX_ERR(3, 417, __pyx_L1_error)

  /* "include/Histo2D.pyx":430
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_tuple__554 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_asgrid, __pyx_n_s_rtn, __pyx_n_s_b); if (unlikely(!__pyx_tuple__554)) __PYX_ERR(3, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__554);
  __Pyx_GIVEREF(__pyx_tuple__554);
  __pyx_codeobj__555 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xFoci, 430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__555)) __PYX_ERR(3, 430, __pyx_L1_error)

  /* "include/Histo2D.pyx":437
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */
  __pyx_tuple__556 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_foci, __pyx_n_s_asgrid); if (unlikely(!__pyx_tuple__556)) __PYX_ERR(3, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__556);
  __Pyx_GIVEREF(__pyx_tuple__556);
  __pyx_codeobj__557 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xVals, 437, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__557)) __PYX_ERR(3, 437, __pyx_L1_error)
  __pyx_tuple__558 = PyTuple_Pack(2, Py_False, Py_False); if (unlikely(!__pyx_tuple__558)) __PYX_ERR(3, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__558);
  __Pyx_GIVEREF(__pyx_tuple__558);

  /* "include/Histo2D.pyx":441
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */
  __pyx_tuple__559 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_foci, __pyx_n_s_asgrid, __pyx_n_s_rtn, __pyx_n_s_b); if (unlikely(!__pyx_tuple__559)) __PYX_ERR(3, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__559);
  __Pyx_GIVEREF(__pyx_tuple__559);
  __pyx_codeobj__560 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_xErrs, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__560)) __PYX_ERR(3, 441, __pyx_L1_error)

  /* "include/Histo2D.pyx":455
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.h2ptr().yEdges())
 */
  __pyx_codeobj__561 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yEdges, 455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__561)) __PYX_ERR(3, 455, __pyx_L1_error)

  /* "include/Histo2D.pyx":459
 *         return self._mknp(self.h2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.h2ptr().yWidths())
 */
  __pyx_codeobj__562 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yWidths, 459, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__562)) __PYX_ERR(3, 459, __pyx_L1_error)

  /* "include/Histo2D.pyx":463
 *         return self._mknp(self.h2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */
  __pyx_codeobj__563 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMin, 463, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__563)) __PYX_ERR(3, 463, __pyx_L1_error)

  /* "include/Histo2D.pyx":467
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */
  __pyx_codeobj__564 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMax, 467, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__564)) __PYX_ERR(3, 467, __pyx_L1_error)

  /* "include/Histo2D.pyx":471
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__565 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMins, 471, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__565)) __PYX_ERR(3, 471, __pyx_L1_error)

  /* "include/Histo2D.pyx":481
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__566 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMaxs, 481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__566)) __PYX_ERR(3, 481, __pyx_L1_error)

  /* "include/Histo2D.pyx":491
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_codeobj__567 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yMids, 491, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__567)) __PYX_ERR(3, 491, __pyx_L1_error)

  /* "include/Histo2D.pyx":505
 *     ## Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */
  __pyx_codeobj__568 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yFoci, 505, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__568)) __PYX_ERR(3, 505, __pyx_L1_error)

  /* "include/Histo2D.pyx":512
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */
  __pyx_codeobj__569 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yVals, 512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__569)) __PYX_ERR(3, 512, __pyx_L1_error)

  /* "include/Histo2D.pyx":516
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */
  __pyx_codeobj__570 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_yErrs, 516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__570)) __PYX_ERR(3, 516, __pyx_L1_error)

  /* "include/Histo2D.pyx":530
 *     ## Filling properties in general
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_codeobj__571 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_sumWs, 530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__571)) __PYX_ERR(3, 530, __pyx_L1_error)

  /* "include/Histo2D.pyx":537
 *         return rtn
 * 
 *     def heights(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */
  __pyx_codeobj__572 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_heights, 537, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__572)) __PYX_ERR(3, 537, __pyx_L1_error)

  /* "include/Histo2D.pyx":544
 *         return rtn
 * 
 *     def volumes(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 */
  __pyx_codeobj__573 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_volumes, 544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__573)) __PYX_ERR(3, 544, __pyx_L1_error)

  /* "include/Histo2D.pyx":551
 *         return rtn
 * 
 *     def zVals(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 */
  __pyx_tuple__574 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_vol, __pyx_n_s_asgrid); if (unlikely(!__pyx_tuple__574)) __PYX_ERR(3, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__574);
  __Pyx_GIVEREF(__pyx_tuple__574);
  __pyx_codeobj__575 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__574, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zVals, 551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__575)) __PYX_ERR(3, 551, __pyx_L1_error)

  /* "include/Histo2D.pyx":554
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 *     def heightErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */
  __pyx_tuple__576 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_asymm, __pyx_n_s_asgrid, __pyx_n_s_rtn, __pyx_n_s_b); if (unlikely(!__pyx_tuple__576)) __PYX_ERR(3, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__576);
  __Pyx_GIVEREF(__pyx_tuple__576);
  __pyx_codeobj__577 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__576, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_heightErrs, 554, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__577)) __PYX_ERR(3, 554, __pyx_L1_error)

  /* "include/Histo2D.pyx":564
 *         return rtn
 * 
 *     def volumeErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volume errors of the histo.
 * 
 */
  __pyx_codeobj__578 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__576, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_volumeErrs, 564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__578)) __PYX_ERR(3, 564, __pyx_L1_error)

  /* "include/Histo2D.pyx":578
 *         return rtn
 * 
 *     def relErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */
  __pyx_codeobj__579 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__576, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_relErrs, 578, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__579)) __PYX_ERR(3, 578, __pyx_L1_error)

  /* "include/Histo2D.pyx":588
 *         return rtn
 * 
 *     def zErrs(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volErrs(asgrid) if vol else self.heightErrs(asgrid)
 * 
 */
  __pyx_codeobj__580 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__574, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zErrs, 588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__580)) __PYX_ERR(3, 588, __pyx_L1_error)

  /* "include/Histo2D.pyx":592
 * 
 * 
 *     def zMins(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */
  __pyx_tuple__581 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_area, __pyx_n_s_asgrid, __pyx_n_s_zs, __pyx_n_s_es, __pyx_n_s_rtn, __pyx_n_s_z, __pyx_n_s_e); if (unlikely(!__pyx_tuple__581)) __PYX_ERR(3, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__581);
  __Pyx_GIVEREF(__pyx_tuple__581);
  __pyx_codeobj__582 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zMins, 592, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__582)) __PYX_ERR(3, 592, __pyx_L1_error)

  /* "include/Histo2D.pyx":600
 *         return rtn
 * 
 *     def zMaxs(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */
  __pyx_codeobj__583 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__581, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zMaxs, 600, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__583)) __PYX_ERR(3, 600, __pyx_L1_error)

  /* "include/Histo2D.pyx":608
 *         return rtn
 * 
 *     def zMin(self, area=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(area))
 */
  __pyx_codeobj__584 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__309, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zMin, 608, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__584)) __PYX_ERR(3, 608, __pyx_L1_error)

  /* "include/Histo2D.pyx":612
 *         return min(self.zMins(area))
 * 
 *     def zMax(self, area=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(area))
 */
  __pyx_codeobj__585 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__309, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Histo2D_pyx, __pyx_n_s_zMax, 612, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__585)) __PYX_ERR(3, 612, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__586 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__586)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__587 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__587)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Profile2D.pyx":38
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Profile2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__588 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_init2, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__588)) __PYX_ERR(24, 38, __pyx_L1_error)

  /* "include/Profile2D.pyx":43
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__589 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__493, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_init4, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__589)) __PYX_ERR(24, 43, __pyx_L1_error)

  /* "include/Profile2D.pyx":49
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__590 = (PyObject*)__Pyx_PyCode_New(9, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__495, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_init8, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__590)) __PYX_ERR(24, 49, __pyx_L1_error)

  /* "include/Profile2D.pyx":68
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_codeobj__591 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_reset, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__591)) __PYX_ERR(24, 68, __pyx_L1_error)

  /* "include/Profile2D.pyx":73
 *         self.p2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile2D.
 *         Clone this Profile2D."""
 */
  __pyx_codeobj__592 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_clone, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__592)) __PYX_ERR(24, 73, __pyx_L1_error)

  /* "include/Profile2D.pyx":79
 * 
 * 
 *     def fill(self, double x, double y, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,z,[w]) -> None.
 *         Fill with given x,y & z values and optional weight and fill fraction."""
 */
  __pyx_codeobj__593 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__86, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_fill, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__593)) __PYX_ERR(24, 79, __pyx_L1_error)

  /* "include/Profile2D.pyx":84
 *         self.p2ptr().fill(x, y, z, weight, fraction)
 * 
 *     def fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,z,[w]) -> None.
 *         Fill bin i with value z and optional weight and fill fraction."""
 */
  __pyx_tuple__594 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_z, __pyx_n_s_weight, __pyx_n_s_fraction); if (unlikely(!__pyx_tuple__594)) __PYX_ERR(24, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__594);
  __Pyx_GIVEREF(__pyx_tuple__594);
  __pyx_codeobj__595 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__594, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_fillBin, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__595)) __PYX_ERR(24, 84, __pyx_L1_error)

  /* "include/Profile2D.pyx":90
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 */
  __pyx_codeobj__596 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_totalDbn, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__596)) __PYX_ERR(24, 90, __pyx_L1_error)

  /* "include/Profile2D.pyx":104
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_codeobj__597 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_numEntries, 104, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__597)) __PYX_ERR(24, 104, __pyx_L1_error)

  /* "include/Profile2D.pyx":109
 *         return self.p2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */
  __pyx_codeobj__598 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_effNumEntries, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__598)) __PYX_ERR(24, 109, __pyx_L1_error)

  /* "include/Profile2D.pyx":114
 *         return self.p2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_codeobj__599 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_sumW, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__599)) __PYX_ERR(24, 114, __pyx_L1_error)

  /* "include/Profile2D.pyx":119
 *         return self.p2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */
  __pyx_codeobj__600 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_sumW2, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__600)) __PYX_ERR(24, 119, __pyx_L1_error)

  /* "include/Profile2D.pyx":125
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__601 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMean, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__601)) __PYX_ERR(24, 125, __pyx_L1_error)

  /* "include/Profile2D.pyx":130
 *         return self.p2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__602 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMean, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__602)) __PYX_ERR(24, 130, __pyx_L1_error)

  /* "include/Profile2D.pyx":135
 *         return self.p2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__603 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xyMean, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__603)) __PYX_ERR(24, 135, __pyx_L1_error)

  /* "include/Profile2D.pyx":141
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__604 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xVariance, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__604)) __PYX_ERR(24, 141, __pyx_L1_error)

  /* "include/Profile2D.pyx":146
 *         return self.p2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__605 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yVariance, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__605)) __PYX_ERR(24, 146, __pyx_L1_error)

  /* "include/Profile2D.pyx":151
 *         return self.p2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__606 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xyVariance, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__606)) __PYX_ERR(24, 151, __pyx_L1_error)

  /* "include/Profile2D.pyx":157
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__607 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xStdDev, 157, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__607)) __PYX_ERR(24, 157, __pyx_L1_error)

  /* "include/Profile2D.pyx":162
 *         return self.p2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__608 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yStdDev, 162, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__608)) __PYX_ERR(24, 162, __pyx_L1_error)

  /* "include/Profile2D.pyx":167
 *         return self.p2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__609 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xyStdDev, 167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__609)) __PYX_ERR(24, 167, __pyx_L1_error)

  /* "include/Profile2D.pyx":173
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__610 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xStdErr, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__610)) __PYX_ERR(24, 173, __pyx_L1_error)

  /* "include/Profile2D.pyx":178
 *         return self.p2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__611 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yStdErr, 178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__611)) __PYX_ERR(24, 178, __pyx_L1_error)

  /* "include/Profile2D.pyx":183
 *         return self.p2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__612 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xyStdErr, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__612)) __PYX_ERR(24, 183, __pyx_L1_error)

  /* "include/Profile2D.pyx":189
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xRMS, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(24, 189, __pyx_L1_error)

  /* "include/Profile2D.pyx":194
 *         return self.p2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__614 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yRMS, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__614)) __PYX_ERR(24, 194, __pyx_L1_error)

  /* "include/Profile2D.pyx":199
 *         return self.p2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_codeobj__615 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__233, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xyRMS, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__615)) __PYX_ERR(24, 199, __pyx_L1_error)

  /* "include/Profile2D.pyx":206
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_codeobj__616 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__24, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_scaleW, 206, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__616)) __PYX_ERR(24, 206, __pyx_L1_error)

  /* "include/Profile2D.pyx":211
 *         self.p2ptr().scaleW(w)
 * 
 *     def scaleZ(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the z-direction (profiled value) in this histogram by the factor f."""
 */
  __pyx_codeobj__617 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__344, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_scaleZ, 211, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__617)) __PYX_ERR(24, 211, __pyx_L1_error)

  /* "include/Profile2D.pyx":217
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p2ptr().xMin()
 */
  __pyx_codeobj__618 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMin, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__618)) __PYX_ERR(24, 217, __pyx_L1_error)

  /* "include/Profile2D.pyx":221
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p2ptr().xMax()
 */
  __pyx_codeobj__619 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMax, 221, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__619)) __PYX_ERR(24, 221, __pyx_L1_error)

  /* "include/Profile2D.pyx":225
 *         return self.p2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.p2ptr().yMin()
 */
  __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMin, 225, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(24, 225, __pyx_L1_error)

  /* "include/Profile2D.pyx":229
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.p2ptr().yMax()
 */
  __pyx_codeobj__621 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMax, 229, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__621)) __PYX_ERR(24, 229, __pyx_L1_error)

  /* "include/Profile2D.pyx":234
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_codeobj__622 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_numBins, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__622)) __PYX_ERR(24, 234, __pyx_L1_error)

  /* "include/Profile2D.pyx":239
 *         return self.p2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */
  __pyx_codeobj__623 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_numBinsX, 239, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__623)) __PYX_ERR(24, 239, __pyx_L1_error)

  /* "include/Profile2D.pyx":244
 *         return self.p2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */
  __pyx_codeobj__624 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_numBinsY, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__624)) __PYX_ERR(24, 244, __pyx_L1_error)

  /* "include/Profile2D.pyx":250
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_codeobj__625 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_bins, 250, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__625)) __PYX_ERR(24, 250, __pyx_L1_error)

  /* "include/Profile2D.pyx":254
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.p2ptr().numBins())
 */
  __pyx_codeobj__626 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_bin, 254, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__626)) __PYX_ERR(24, 254, __pyx_L1_error)

  /* "include/Profile2D.pyx":266
 *     #     return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.p2ptr().binIndexAt(x, y)
 */
  __pyx_codeobj__627 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_binIndexAt, 266, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__627)) __PYX_ERR(24, 266, __pyx_L1_error)

  /* "include/Profile2D.pyx":270
 *         return self.p2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_codeobj__628 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_binAt, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__628)) __PYX_ERR(24, 270, __pyx_L1_error)

  /* "include/Profile2D.pyx":278
 * 
 * 
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 */
  __pyx_codeobj__629 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__536, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_addBin, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__629)) __PYX_ERR(24, 278, __pyx_L1_error)

  /* "include/Profile2D.pyx":284
 *         return self
 * 
 *     def addBins(self, xcuts, ycuts):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_tuple__630 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_xcuts, __pyx_n_s_ycuts, __pyx_n_s_xcuts_2, __pyx_n_s_ycuts_2, __pyx_n_s_x, __pyx_n_s_y); if (unlikely(!__pyx_tuple__630)) __PYX_ERR(24, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__630);
  __Pyx_GIVEREF(__pyx_tuple__630);
  __pyx_codeobj__631 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__630, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_addBins, 284, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__631)) __PYX_ERR(24, 284, __pyx_L1_error)

  /* "include/Profile2D.pyx":304
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Profile2D to a Scatter3D, with z representing
 */
  __pyx_tuple__632 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_usefocus, __pyx_n_s_usestddev, __pyx_n_s_s3); if (unlikely(!__pyx_tuple__632)) __PYX_ERR(24, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__632);
  __Pyx_GIVEREF(__pyx_tuple__632);
  __pyx_codeobj__633 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__632, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_mkScatter, 304, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__633)) __PYX_ERR(24, 304, __pyx_L1_error)

  /* "include/Profile2D.pyx":311
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Profile2D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_codeobj__634 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__365, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_divideBy, 311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__634)) __PYX_ERR(24, 311, __pyx_L1_error)

  /* "include/Profile2D.pyx":343
 *     #     return [b.sumW() for b in self.bins()]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__635 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_mknp, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__635)) __PYX_ERR(24, 343, __pyx_L1_error)

  /* "include/Profile2D.pyx":353
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.p2ptr().xEdges())
 */
  __pyx_codeobj__636 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xEdges, 353, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__636)) __PYX_ERR(24, 353, __pyx_L1_error)

  /* "include/Profile2D.pyx":357
 *         return self._mknp(self.p2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p2ptr().xWidths())
 */
  __pyx_codeobj__637 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xWidths, 357, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__637)) __PYX_ERR(24, 357, __pyx_L1_error)

  /* "include/Profile2D.pyx":361
 *         return self._mknp(self.p2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */
  __pyx_codeobj__638 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMin, 361, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__638)) __PYX_ERR(24, 361, __pyx_L1_error)

  /* "include/Profile2D.pyx":365
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */
  __pyx_codeobj__639 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMax, 365, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__639)) __PYX_ERR(24, 365, __pyx_L1_error)

  /* "include/Profile2D.pyx":369
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__640 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMins, 369, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__640)) __PYX_ERR(24, 369, __pyx_L1_error)

  /* "include/Profile2D.pyx":379
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__641 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMaxs, 379, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__641)) __PYX_ERR(24, 379, __pyx_L1_error)

  /* "include/Profile2D.pyx":389
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_codeobj__642 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xMids, 389, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__642)) __PYX_ERR(24, 389, __pyx_L1_error)

  /* "include/Profile2D.pyx":403
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_codeobj__643 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xFoci, 403, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__643)) __PYX_ERR(24, 403, __pyx_L1_error)

  /* "include/Profile2D.pyx":410
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */
  __pyx_codeobj__644 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xVals, 410, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__644)) __PYX_ERR(24, 410, __pyx_L1_error)

  /* "include/Profile2D.pyx":414
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */
  __pyx_codeobj__645 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_xErrs, 414, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__645)) __PYX_ERR(24, 414, __pyx_L1_error)

  /* "include/Profile2D.pyx":428
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.p2ptr().yEdges())
 */
  __pyx_codeobj__646 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yEdges, 428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__646)) __PYX_ERR(24, 428, __pyx_L1_error)

  /* "include/Profile2D.pyx":432
 *         return self._mknp(self.p2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.p2ptr().yWidths())
 */
  __pyx_codeobj__647 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yWidths, 432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__647)) __PYX_ERR(24, 432, __pyx_L1_error)

  /* "include/Profile2D.pyx":436
 *         return self._mknp(self.p2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */
  __pyx_codeobj__648 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMin, 436, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__648)) __PYX_ERR(24, 436, __pyx_L1_error)

  /* "include/Profile2D.pyx":440
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */
  __pyx_codeobj__649 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMax, 440, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__649)) __PYX_ERR(24, 440, __pyx_L1_error)

  /* "include/Profile2D.pyx":444
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__650 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMins, 444, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__650)) __PYX_ERR(24, 444, __pyx_L1_error)

  /* "include/Profile2D.pyx":454
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */
  __pyx_codeobj__651 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMaxs, 454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__651)) __PYX_ERR(24, 454, __pyx_L1_error)

  /* "include/Profile2D.pyx":464
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_codeobj__652 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yMids, 464, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__652)) __PYX_ERR(24, 464, __pyx_L1_error)

  /* "include/Profile2D.pyx":478
 *     # Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */
  __pyx_codeobj__653 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yFoci, 478, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__653)) __PYX_ERR(24, 478, __pyx_L1_error)

  /* "include/Profile2D.pyx":485
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */
  __pyx_codeobj__654 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__556, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yVals, 485, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__654)) __PYX_ERR(24, 485, __pyx_L1_error)

  /* "include/Profile2D.pyx":489
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */
  __pyx_codeobj__655 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__559, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_yErrs, 489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__655)) __PYX_ERR(24, 489, __pyx_L1_error)

  /* "include/Profile2D.pyx":500
 *         return rtn
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_codeobj__656 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_sumWs, 500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__656)) __PYX_ERR(24, 500, __pyx_L1_error)

  /* "include/Profile2D.pyx":507
 *         return rtn
 * 
 *     def zMeans(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */
  __pyx_codeobj__657 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zMeans, 507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__657)) __PYX_ERR(24, 507, __pyx_L1_error)

  /* "include/Profile2D.pyx":514
 *         return rtn
 * 
 *     def zVals(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zMeans(asgrid)
 * 
 */
  __pyx_tuple__658 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_asgrid); if (unlikely(!__pyx_tuple__658)) __PYX_ERR(24, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__658);
  __Pyx_GIVEREF(__pyx_tuple__658);
  __pyx_codeobj__659 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__658, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zVals, 514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__659)) __PYX_ERR(24, 514, __pyx_L1_error)

  /* "include/Profile2D.pyx":518
 * 
 * 
 *     def zStdErrs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 */
  __pyx_codeobj__660 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zStdErrs, 518, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__660)) __PYX_ERR(24, 518, __pyx_L1_error)

  /* "include/Profile2D.pyx":525
 *         return rtn
 * 
 *     def zStdDevs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 */
  __pyx_codeobj__661 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__554, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zStdDevs, 525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__661)) __PYX_ERR(24, 525, __pyx_L1_error)

  /* "include/Profile2D.pyx":532
 *         return rtn
 * 
 *     def zErrs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zStdDevs(asgrid) if sd else self.zStdErrs(asgrid)
 * 
 */
  __pyx_tuple__662 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_sd, __pyx_n_s_asgrid); if (unlikely(!__pyx_tuple__662)) __PYX_ERR(24, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__662);
  __Pyx_GIVEREF(__pyx_tuple__662);
  __pyx_codeobj__663 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__662, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zErrs, 532, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__663)) __PYX_ERR(24, 532, __pyx_L1_error)

  /* "include/Profile2D.pyx":536
 * 
 * 
 *     def zMins(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */
  __pyx_tuple__664 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_sd, __pyx_n_s_asgrid, __pyx_n_s_zs, __pyx_n_s_es, __pyx_n_s_rtn, __pyx_n_s_z, __pyx_n_s_e); if (unlikely(!__pyx_tuple__664)) __PYX_ERR(24, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__664);
  __Pyx_GIVEREF(__pyx_tuple__664);
  __pyx_codeobj__665 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__664, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zMins, 536, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__665)) __PYX_ERR(24, 536, __pyx_L1_error)

  /* "include/Profile2D.pyx":544
 *         return rtn
 * 
 *     def zMaxs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */
  __pyx_codeobj__666 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__664, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zMaxs, 544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__666)) __PYX_ERR(24, 544, __pyx_L1_error)

  /* "include/Profile2D.pyx":552
 *         return rtn
 * 
 *     def zMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(sd))
 */
  __pyx_codeobj__667 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zMin, 552, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__667)) __PYX_ERR(24, 552, __pyx_L1_error)

  /* "include/Profile2D.pyx":556
 *         return min(self.zMins(sd))
 * 
 *     def zMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(sd))
 */
  __pyx_codeobj__668 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__383, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Profile2D_pyx, __pyx_n_s_zMax, 556, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__668)) __PYX_ERR(24, 556, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__669 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__669)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__670 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__670)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Point.pyx":25
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 * 
 */
  __pyx_codeobj__671 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_dim, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__671)) __PYX_ERR(25, 25, __pyx_L1_error)

  /* "include/Point.pyx":32
 * 
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """int -> float
 *         Value on axis i"""
 */
  __pyx_codeobj__672 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_val, 32, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__672)) __PYX_ERR(25, 32, __pyx_L1_error)

  /* "include/Point.pyx":37
 *         return self.pptr().val(i)
 * 
 *     def setVal(self, i, val):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_tuple__673 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_val); if (unlikely(!__pyx_tuple__673)) __PYX_ERR(25, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__673);
  __Pyx_GIVEREF(__pyx_tuple__673);
  __pyx_codeobj__674 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__673, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setVal, 37, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__674)) __PYX_ERR(25, 37, __pyx_L1_error)

  /* "include/Point.pyx":44
 * 
 * 
 *     def errs(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_tuple__675 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_source); if (unlikely(!__pyx_tuple__675)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__675);
  __Pyx_GIVEREF(__pyx_tuple__675);
  __pyx_codeobj__676 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_errs, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__676)) __PYX_ERR(25, 44, __pyx_L1_error)
  __pyx_tuple__677 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__677)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__677);
  __Pyx_GIVEREF(__pyx_tuple__677);

  /* "include/Point.pyx":54
 *         return util.read_error_pair(self.pptr().errs(i,source))
 * 
 *     def setErr(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_tuple__678 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_e, __pyx_n_s_source); if (unlikely(!__pyx_tuple__678)) __PYX_ERR(25, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__678);
  __Pyx_GIVEREF(__pyx_tuple__678);
  __pyx_codeobj__679 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErr, 54, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__679)) __PYX_ERR(25, 54, __pyx_L1_error)

  /* "include/Point.pyx":64
 *         self.pptr().setErr(i, e, source)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_tuple__680 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_es, __pyx_n_s_source, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__680)) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__680);
  __Pyx_GIVEREF(__pyx_tuple__680);
  __pyx_codeobj__681 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__680, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrs, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__681)) __PYX_ERR(25, 64, __pyx_L1_error)

  /* "include/Point.pyx":101
 * 
 * 
 *     def errMinus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_codeobj__682 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_errMinus, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__682)) __PYX_ERR(25, 101, __pyx_L1_error)

  /* "include/Point.pyx":113
 *         return self.pptr().errMinus(i ,source)
 * 
 *     def setErrMinus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_codeobj__683 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrMinus, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__683)) __PYX_ERR(25, 113, __pyx_L1_error)

  /* "include/Point.pyx":126
 * 
 * 
 *     def errPlus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_codeobj__684 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_errPlus, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__684)) __PYX_ERR(25, 126, __pyx_L1_error)

  /* "include/Point.pyx":138
 *         return self.pptr().errPlus(i, source)
 * 
 *     def setErrPlus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_codeobj__685 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__678, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_setErrPlus, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__685)) __PYX_ERR(25, 138, __pyx_L1_error)

  /* "include/Point.pyx":151
 * 
 * 
 *     def errAvg(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int -> float
 * 
 */
  __pyx_codeobj__686 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__675, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_errAvg, 151, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__686)) __PYX_ERR(25, 151, __pyx_L1_error)

  /* "include/Point.pyx":164
 * 
 * 
 *     def set(self, i, val, *es, source=""):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float, float) -> None
 */
  __pyx_tuple__687 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_val, __pyx_n_s_source, __pyx_n_s_es, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__687)) __PYX_ERR(25, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__687);
  __Pyx_GIVEREF(__pyx_tuple__687);
  __pyx_codeobj__688 = (PyObject*)__Pyx_PyCode_New(3, 0, 1, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__687, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_set, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__688)) __PYX_ERR(25, 164, __pyx_L1_error)

  /* "include/Point.pyx":189
 *         self.pptr().set(i, val, errs, source)
 * 
 *     def errMap(self):             # <<<<<<<<<<<<<<
 *         """None -> {string: [float,float]}
 * 
 */
  __pyx_tuple__689 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_err_map, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__689)) __PYX_ERR(25, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__689);
  __Pyx_GIVEREF(__pyx_tuple__689);
  __pyx_codeobj__690 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__689, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_errMap, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__690)) __PYX_ERR(25, 189, __pyx_L1_error)

  /* "include/Point.pyx":199
 * 
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 * 
 */
  __pyx_codeobj__691 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_rmVariations, 199, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__691)) __PYX_ERR(25, 199, __pyx_L1_error)

  /* "include/Point.pyx":207
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_tuple__692 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_i, __pyx_n_s_scale); if (unlikely(!__pyx_tuple__692)) __PYX_ERR(25, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__692);
  __Pyx_GIVEREF(__pyx_tuple__692);
  __pyx_codeobj__693 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point_pyx, __pyx_n_s_scale, 207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__693)) __PYX_ERR(25, 207, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__694 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__694)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__695 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__695)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Point1D.pyx":18
 *         self.setXErrs(xerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */
  __pyx_codeobj__696 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_copy, 18, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__696)) __PYX_ERR(26, 18, __pyx_L1_error)

  /* "include/Point1D.pyx":24
 * 
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_tuple__697 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_es, __pyx_n_s_source, __pyx_n_s_errs); if (unlikely(!__pyx_tuple__697)) __PYX_ERR(26, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__697);
  __Pyx_GIVEREF(__pyx_tuple__697);
  __pyx_codeobj__698 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_setXErrs, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__698)) __PYX_ERR(26, 24, __pyx_L1_error)

  /* "include/Point1D.pyx":55
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setXErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 * 
 */
  __pyx_tuple__699 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_val, __pyx_n_s_source); if (unlikely(!__pyx_tuple__699)) __PYX_ERR(26, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__699);
  __Pyx_GIVEREF(__pyx_tuple__699);
  __pyx_codeobj__700 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_setXErrs, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__700)) __PYX_ERR(26, 55, __pyx_L1_error)

  /* "include/Point1D.pyx":80
 *     #         self.p1ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */
  __pyx_codeobj__701 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_x, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__701)) __PYX_ERR(26, 80, __pyx_L1_error)

  /* "include/Point1D.pyx":83
 *         """The x value"""
 *         return self.p1ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */
  __pyx_codeobj__702 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_setX, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__702)) __PYX_ERR(26, 83, __pyx_L1_error)

  /* "include/Point1D.pyx":87
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs())
 */
  __pyx_codeobj__703 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_xErrs, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__703)) __PYX_ERR(26, 87, __pyx_L1_error)

  /* "include/Point1D.pyx":91
 *         return util.read_error_pair(self.p1ptr().xErrs())
 * 
 *     def xErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 */
  __pyx_tuple__704 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_source); if (unlikely(!__pyx_tuple__704)) __PYX_ERR(26, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__704);
  __Pyx_GIVEREF(__pyx_tuple__704);
  __pyx_codeobj__705 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__704, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_xErrsFromSource, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__705)) __PYX_ERR(26, 91, __pyx_L1_error)

  /* "include/Point1D.pyx":95
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *            (int, [float, float]) -> None
 */
  __pyx_codeobj__706 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_setXErrs, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__706)) __PYX_ERR(26, 95, __pyx_L1_error)

  /* "include/Point1D.pyx":119
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setYErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __pyx_codeobj__707 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_setYErrs, 119, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__707)) __PYX_ERR(26, 119, __pyx_L1_error)

  /* "include/Point1D.pyx":125
 * 
 *     #@property
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */
  __pyx_codeobj__708 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_xMin, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__708)) __PYX_ERR(26, 125, __pyx_L1_error)

  /* "include/Point1D.pyx":129
 *         return self.p1ptr().xMin()
 *     #@property
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */
  __pyx_codeobj__709 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_xMax, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__709)) __PYX_ERR(26, 129, __pyx_L1_error)

  /* "include/Point1D.pyx":133
 *         return self.p1ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__710 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_xErrAvg, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__710)) __PYX_ERR(26, 133, __pyx_L1_error)

  /* "include/Point1D.pyx":137
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_codeobj__711 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point1D_pyx, __pyx_n_s_scaleX, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__711)) __PYX_ERR(26, 137, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__712 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__712)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__713 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__713)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Point2D.pyx":19
 *         self.setYErrs(yerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */
  __pyx_codeobj__714 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_copy, 19, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__714)) __PYX_ERR(27, 19, __pyx_L1_error)

  /* "include/Point2D.pyx":33
 *     #    #return None
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */
  __pyx_codeobj__715 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_x, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__715)) __PYX_ERR(27, 33, __pyx_L1_error)

  /* "include/Point2D.pyx":36
 *         """The x value"""
 *         return self.p2ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */
  __pyx_codeobj__716 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_setX, 36, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__716)) __PYX_ERR(27, 36, __pyx_L1_error)

  /* "include/Point2D.pyx":40
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p2ptr().xErrs())
 */
  __pyx_codeobj__717 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_xErrs, 40, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__717)) __PYX_ERR(27, 40, __pyx_L1_error)

  /* "include/Point2D.pyx":44
 *         return util.read_error_pair(self.p2ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 */
  __pyx_tuple__718 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_val); if (unlikely(!__pyx_tuple__718)) __PYX_ERR(27, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__718);
  __Pyx_GIVEREF(__pyx_tuple__718);
  __pyx_codeobj__719 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_setXErrs, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__719)) __PYX_ERR(27, 44, __pyx_L1_error)

  /* "include/Point2D.pyx":48
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */
  __pyx_codeobj__720 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_xMin, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__720)) __PYX_ERR(27, 48, __pyx_L1_error)

  /* "include/Point2D.pyx":51
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */
  __pyx_codeobj__721 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_xMax, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__721)) __PYX_ERR(27, 51, __pyx_L1_error)

  /* "include/Point2D.pyx":55
 *         return self.p2ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__722 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_xErrAvg, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__722)) __PYX_ERR(27, 55, __pyx_L1_error)

  /* "include/Point2D.pyx":60
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */
  __pyx_codeobj__723 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_y, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__723)) __PYX_ERR(27, 60, __pyx_L1_error)

  /* "include/Point2D.pyx":63
 *         """The y value"""
 *         return self.p2ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */
  __pyx_codeobj__724 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_setY, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__724)) __PYX_ERR(27, 63, __pyx_L1_error)

  /* "include/Point2D.pyx":67
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The (total) y errors"""
 *         return util.read_error_pair(self.p2ptr().yErrs())
 */
  __pyx_codeobj__725 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_yErrs, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__725)) __PYX_ERR(27, 67, __pyx_L1_error)

  /* "include/Point2D.pyx":71
 *         return util.read_error_pair(self.p2ptr().yErrs())
 * 
 *     def yErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors from a particular named source of uncertainty in the breakdown"""
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 */
  __pyx_codeobj__726 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__704, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_yErrsFromSource, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__726)) __PYX_ERR(27, 71, __pyx_L1_error)

  /* "include/Point2D.pyx":75
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__727 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_setYErrs, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__727)) __PYX_ERR(27, 75, __pyx_L1_error)

  /* "include/Point2D.pyx":106
 *         self.pptr().setErrs(2, tuple(errs), source)
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */
  __pyx_codeobj__728 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_yMin, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__728)) __PYX_ERR(27, 106, __pyx_L1_error)

  /* "include/Point2D.pyx":109
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */
  __pyx_codeobj__729 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_yMax, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__729)) __PYX_ERR(27, 109, __pyx_L1_error)

  /* "include/Point2D.pyx":113
 *         return self.p2ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */
  __pyx_codeobj__730 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_yErrAvg, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__730)) __PYX_ERR(27, 113, __pyx_L1_error)

  /* "include/Point2D.pyx":128
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_codeobj__731 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_scaleX, 128, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__731)) __PYX_ERR(27, 128, __pyx_L1_error)

  /* "include/Point2D.pyx":133
 *         self.p2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_codeobj__732 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_scaleY, 133, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__732)) __PYX_ERR(27, 133, __pyx_L1_error)

  /* "include/Point2D.pyx":138
 *         self.p2ptr().scaleY(a)
 * 
 *     def scaleXY(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */
  __pyx_codeobj__733 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_scaleXY, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__733)) __PYX_ERR(27, 138, __pyx_L1_error)

  /* "include/Point2D.pyx":146
 * 
 *     # TODO: remove
 *     def scale(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */
  __pyx_codeobj__734 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__65, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point2D_pyx, __pyx_n_s_scale, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__734)) __PYX_ERR(27, 146, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__735 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__735)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__736 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__736)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Point3D.pyx":22
 *         self.setZErrs(zerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */
  __pyx_codeobj__737 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_copy, 22, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__737)) __PYX_ERR(28, 22, __pyx_L1_error)

  /* "include/Point3D.pyx":27
 * 
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */
  __pyx_codeobj__738 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_x, 27, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__738)) __PYX_ERR(28, 27, __pyx_L1_error)

  /* "include/Point3D.pyx":30
 *         """The x value"""
 *         return self.p3ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */
  __pyx_codeobj__739 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__40, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setX, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__739)) __PYX_ERR(28, 30, __pyx_L1_error)

  /* "include/Point3D.pyx":34
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p3ptr().xErrs())
 */
  __pyx_codeobj__740 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_xErrs, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__740)) __PYX_ERR(28, 34, __pyx_L1_error)

  /* "include/Point3D.pyx":38
 *         return util.read_error_pair(self.p3ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 */
  __pyx_codeobj__741 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setXErrs, 38, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__741)) __PYX_ERR(28, 38, __pyx_L1_error)

  /* "include/Point3D.pyx":42
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */
  __pyx_codeobj__742 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_xMin, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__742)) __PYX_ERR(28, 42, __pyx_L1_error)

  /* "include/Point3D.pyx":45
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */
  __pyx_codeobj__743 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_xMax, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__743)) __PYX_ERR(28, 45, __pyx_L1_error)

  /* "include/Point3D.pyx":49
 *         return self.p3ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */
  __pyx_codeobj__744 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_xErrAvg, 49, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__744)) __PYX_ERR(28, 49, __pyx_L1_error)

  /* "include/Point3D.pyx":53
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */
  __pyx_codeobj__745 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_y, 53, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__745)) __PYX_ERR(28, 53, __pyx_L1_error)

  /* "include/Point3D.pyx":56
 *         """The y value"""
 *         return self.p3ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */
  __pyx_codeobj__746 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__63, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setY, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__746)) __PYX_ERR(28, 56, __pyx_L1_error)

  /* "include/Point3D.pyx":60
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p3ptr().yErrs())
 */
  __pyx_codeobj__747 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_yErrs, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__747)) __PYX_ERR(28, 60, __pyx_L1_error)

  /* "include/Point3D.pyx":64
 *         return util.read_error_pair(self.p3ptr().yErrs())
 * 
 *     def setYErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the y errors"""
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 */
  __pyx_codeobj__748 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__718, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setYErrs, 64, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__748)) __PYX_ERR(28, 64, __pyx_L1_error)

  /* "include/Point3D.pyx":68
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */
  __pyx_codeobj__749 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_yMin, 68, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__749)) __PYX_ERR(28, 68, __pyx_L1_error)

  /* "include/Point3D.pyx":71
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */
  __pyx_codeobj__750 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_yMax, 71, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__750)) __PYX_ERR(28, 71, __pyx_L1_error)

  /* "include/Point3D.pyx":75
 *         return self.p3ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */
  __pyx_codeobj__751 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_yErrAvg, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__751)) __PYX_ERR(28, 75, __pyx_L1_error)

  /* "include/Point3D.pyx":79
 * 
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */
  __pyx_codeobj__752 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_z, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__752)) __PYX_ERR(28, 79, __pyx_L1_error)

  /* "include/Point3D.pyx":82
 *         """The z value"""
 *         return self.p3ptr().z()
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */
  __pyx_codeobj__753 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__92, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setZ, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__753)) __PYX_ERR(28, 82, __pyx_L1_error)

  /* "include/Point3D.pyx":86
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs())
 */
  __pyx_codeobj__754 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_zErrs, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__754)) __PYX_ERR(28, 86, __pyx_L1_error)

  /* "include/Point3D.pyx":90
 *         return util.read_error_pair(self.p3ptr().zErrs())
 * 
 *     def zErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 */
  __pyx_codeobj__755 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__704, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_zErrsFromSource, 90, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__755)) __PYX_ERR(28, 90, __pyx_L1_error)

  /* "include/Point3D.pyx":94
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_codeobj__756 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__697, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setZErrs, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__756)) __PYX_ERR(28, 94, __pyx_L1_error)

  /* "include/Point3D.pyx":125
 *         self.pptr().setErrs(3, tuple(errs), source)
 * 
 *     def setZErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 *         Set symmetric errors on z-axis with an optional string argument to
 */
  __pyx_codeobj__757 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__699, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_setZErrs, 125, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__757)) __PYX_ERR(28, 125, __pyx_L1_error)

  /* "include/Point3D.pyx":134
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */
  __pyx_codeobj__758 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_zMin, 134, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__758)) __PYX_ERR(28, 134, __pyx_L1_error)

  /* "include/Point3D.pyx":137
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */
  __pyx_codeobj__759 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_zMax, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__759)) __PYX_ERR(28, 137, __pyx_L1_error)

  /* "include/Point3D.pyx":141
 *         return self.p3ptr().zMax()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */
  __pyx_codeobj__760 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_zErrAvg, 141, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__760)) __PYX_ERR(28, 141, __pyx_L1_error)

  /* "include/Point3D.pyx":179
 * 
 * 
 *     def scaleX(self, ax):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__761 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ax); if (unlikely(!__pyx_tuple__761)) __PYX_ERR(28, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__761);
  __Pyx_GIVEREF(__pyx_tuple__761);
  __pyx_codeobj__762 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__761, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_scaleX, 179, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__762)) __PYX_ERR(28, 179, __pyx_L1_error)

  /* "include/Point3D.pyx":186
 *         self.p3ptr().scaleX(ax)
 * 
 *     def scaleY(self, ay):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__763 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ay); if (unlikely(!__pyx_tuple__763)) __PYX_ERR(28, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__763);
  __Pyx_GIVEREF(__pyx_tuple__763);
  __pyx_codeobj__764 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__763, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_scaleY, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__764)) __PYX_ERR(28, 186, __pyx_L1_error)

  /* "include/Point3D.pyx":193
 *         self.p3ptr().scaleY(ay)
 * 
 *     def scaleZ(self, az):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_tuple__765 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_az); if (unlikely(!__pyx_tuple__765)) __PYX_ERR(28, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__765);
  __Pyx_GIVEREF(__pyx_tuple__765);
  __pyx_codeobj__766 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__765, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_scaleZ, 193, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__766)) __PYX_ERR(28, 193, __pyx_L1_error)

  /* "include/Point3D.pyx":200
 *         self.p3ptr().scaleZ(az)
 * 
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1.0, float=1.0, float=1.0) -> None
 */
  __pyx_tuple__767 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_ax, __pyx_n_s_ay, __pyx_n_s_az); if (unlikely(!__pyx_tuple__767)) __PYX_ERR(28, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__767);
  __Pyx_GIVEREF(__pyx_tuple__767);
  __pyx_codeobj__768 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__767, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_scaleXYZ, 200, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__768)) __PYX_ERR(28, 200, __pyx_L1_error)
  __pyx_tuple__769 = PyTuple_Pack(3, __pyx_float_1_0, __pyx_float_1_0, __pyx_float_1_0); if (unlikely(!__pyx_tuple__769)) __PYX_ERR(28, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__769);
  __Pyx_GIVEREF(__pyx_tuple__769);

  /* "include/Point3D.pyx":208
 * 
 *     # TODO: remove
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (double=1.0, double=1.0, double=1.0) -> None
 */
  __pyx_codeobj__770 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__767, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Point3D_pyx, __pyx_n_s_scaleXYZ, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__770)) __PYX_ERR(28, 208, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__771 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__771)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__772 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__772)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Scatter1D.pyx":25
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__773 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_init_2, 25, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__773)) __PYX_ERR(4, 25, __pyx_L1_error)

  /* "include/Scatter1D.pyx":30
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_tuple__774 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_points, __pyx_n_s_path, __pyx_n_s_title); if (unlikely(!__pyx_tuple__774)) __PYX_ERR(4, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__774);
  __Pyx_GIVEREF(__pyx_tuple__774);
  __pyx_codeobj__775 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__774, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_init_3, 30, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__775)) __PYX_ERR(4, 30, __pyx_L1_error)

  /* "include/Scatter1D.pyx":34
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */
  __pyx_codeobj__776 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_clone, 34, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__776)) __PYX_ERR(4, 34, __pyx_L1_error)

  /* "include/Scatter1D.pyx":43
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */
  __pyx_codeobj__777 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_reset, 43, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__777)) __PYX_ERR(4, 43, __pyx_L1_error)

  /* "include/Scatter1D.pyx":48
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__778 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_numPoints, 48, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__778)) __PYX_ERR(4, 48, __pyx_L1_error)

  /* "include/Scatter1D.pyx":57
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_codeobj__779 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_points, 57, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__779)) __PYX_ERR(4, 57, __pyx_L1_error)

  /* "include/Scatter1D.pyx":61
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */
  __pyx_codeobj__780 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_point, 61, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__780)) __PYX_ERR(4, 61, __pyx_L1_error)

  /* "include/Scatter1D.pyx":70
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_tuple__781 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__781)) __PYX_ERR(4, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__781);
  __Pyx_GIVEREF(__pyx_tuple__781);
  __pyx_codeobj__782 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__781, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_addPoint, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__782)) __PYX_ERR(4, 70, __pyx_L1_error)

  /* "include/Scatter1D.pyx":81
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 */
  __pyx_tuple__783 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_xerrs); if (unlikely(!__pyx_tuple__783)) __PYX_ERR(4, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__783);
  __Pyx_GIVEREF(__pyx_tuple__783);
  __pyx_codeobj__784 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__783, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_addPoint_explicit, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__784)) __PYX_ERR(4, 81, __pyx_L1_error)
  __pyx_tuple__785 = PyTuple_Pack(1, __pyx_int_0); if (unlikely(!__pyx_tuple__785)) __PYX_ERR(4, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__785);
  __Pyx_GIVEREF(__pyx_tuple__785);

  /* "include/Scatter1D.pyx":84
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */
  __pyx_tuple__786 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_p); if (unlikely(!__pyx_tuple__786)) __PYX_ERR(4, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__786);
  __Pyx_GIVEREF(__pyx_tuple__786);
  __pyx_codeobj__787 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_addPoint_point, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__787)) __PYX_ERR(4, 84, __pyx_L1_error)

  /* "include/Scatter1D.pyx":87
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_tuple__788 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_iterable, __pyx_n_s_row); if (unlikely(!__pyx_tuple__788)) __PYX_ERR(4, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__788);
  __Pyx_GIVEREF(__pyx_tuple__788);
  __pyx_codeobj__789 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__788, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_addPoints, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__789)) __PYX_ERR(4, 87, __pyx_L1_error)

  /* "include/Scatter1D.pyx":95
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */
  __pyx_tuple__790 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__790)) __PYX_ERR(4, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__790);
  __Pyx_GIVEREF(__pyx_tuple__790);
  __pyx_codeobj__791 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__790, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_rmPoint, 95, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__791)) __PYX_ERR(4, 95, __pyx_L1_error)

  /* "include/Scatter1D.pyx":98
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */
  __pyx_tuple__792 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_idxs); if (unlikely(!__pyx_tuple__792)) __PYX_ERR(4, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__792);
  __Pyx_GIVEREF(__pyx_tuple__792);
  __pyx_codeobj__793 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__792, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_rmPoints, 98, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__793)) __PYX_ERR(4, 98, __pyx_L1_error)

  /* "include/Scatter1D.pyx":101
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */
  __pyx_tuple__794 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_others, __pyx_n_s_other); if (unlikely(!__pyx_tuple__794)) __PYX_ERR(4, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__794);
  __Pyx_GIVEREF(__pyx_tuple__794);
  __pyx_codeobj__795 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__794, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_combineWith, 101, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__795)) __PYX_ERR(4, 101, __pyx_L1_error)

  /* "include/Scatter1D.pyx":115
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_tuple__796 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s2); if (unlikely(!__pyx_tuple__796)) __PYX_ERR(4, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__796);
  __Pyx_GIVEREF(__pyx_tuple__796);
  __pyx_codeobj__797 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__796, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_mkScatter, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__797)) __PYX_ERR(4, 115, __pyx_L1_error)

  /* "include/Scatter1D.pyx":123
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__798 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_scaleX, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__798)) __PYX_ERR(4, 123, __pyx_L1_error)

  /* "include/Scatter1D.pyx":129
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__799 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_scale, 129, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__799)) __PYX_ERR(4, 129, __pyx_L1_error)

  /* "include/Scatter1D.pyx":135
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_tuple__800 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_f, __pyx_n_s_ctypes, __pyx_n_s_callback, __pyx_n_s_fptr); if (unlikely(!__pyx_tuple__800)) __PYX_ERR(4, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__800);
  __Pyx_GIVEREF(__pyx_tuple__800);
  __pyx_codeobj__801 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_transformX, 135, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__801)) __PYX_ERR(4, 135, __pyx_L1_error)

  /* "include/Scatter1D.pyx":146
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */
  __pyx_codeobj__802 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_parseVariations, 146, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__802)) __PYX_ERR(4, 146, __pyx_L1_error)

  /* "include/Scatter1D.pyx":152
 *         return self.s1ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_codeobj__803 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_updateTotalUncertainty, 152, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__803)) __PYX_ERR(4, 152, __pyx_L1_error)

  /* "include/Scatter1D.pyx":158
 *         return self.s1ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_codeobj__804 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_writeVariationsToAnnotations, 158, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__804)) __PYX_ERR(4, 158, __pyx_L1_error)

  /* "include/Scatter1D.pyx":164
 *         return self.s1ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_tuple__805 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_vars, __pyx_n_s_var); if (unlikely(!__pyx_tuple__805)) __PYX_ERR(4, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__805);
  __Pyx_GIVEREF(__pyx_tuple__805);
  __pyx_codeobj__806 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__805, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_variations, 164, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__806)) __PYX_ERR(4, 164, __pyx_L1_error)

  /* "include/Scatter1D.pyx":170
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_codeobj__807 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_rmVariations, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__807)) __PYX_ERR(4, 170, __pyx_L1_error)

  /* "include/Scatter1D.pyx":175
 *         return self.s1ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_tuple__808 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_counter, __pyx_n_s_p, __pyx_n_s_binErrs, __pyx_n_s_binTotal, __pyx_n_s_sys, __pyx_n_s_err); if (unlikely(!__pyx_tuple__808)) __PYX_ERR(4, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__808);
  __Pyx_GIVEREF(__pyx_tuple__808);
  __pyx_codeobj__809 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__808, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_hasValidErrorBreakdown, 175, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__809)) __PYX_ERR(4, 175, __pyx_L1_error)

  /* "include/Scatter1D.pyx":202
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__810 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_mknp, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__810)) __PYX_ERR(4, 202, __pyx_L1_error)

  /* "include/Scatter1D.pyx":209
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_codeobj__811 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_xVals, 209, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__811)) __PYX_ERR(4, 209, __pyx_L1_error)

  /* "include/Scatter1D.pyx":212
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */
  __pyx_codeobj__812 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_xMins, 212, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__812)) __PYX_ERR(4, 212, __pyx_L1_error)

  /* "include/Scatter1D.pyx":216
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */
  __pyx_codeobj__813 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_xMaxs, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__813)) __PYX_ERR(4, 216, __pyx_L1_error)

  /* "include/Scatter1D.pyx":222
 *     # TODO: xErrs
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_codeobj__814 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_xMin, 222, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__814)) __PYX_ERR(4, 222, __pyx_L1_error)

  /* "include/Scatter1D.pyx":226
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_codeobj__815 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter1D_pyx, __pyx_n_s_xMax, 226, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__815)) __PYX_ERR(4, 226, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__816 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__816)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__817 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__817)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Scatter2D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__818 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_init_2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__818)) __PYX_ERR(29, 24, __pyx_L1_error)

  /* "include/Scatter2D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_codeobj__819 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__774, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_init_3, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__819)) __PYX_ERR(29, 29, __pyx_L1_error)

  /* "include/Scatter2D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter2D.
 *         Clone this Scatter2D."""
 */
  __pyx_codeobj__820 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_clone, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__820)) __PYX_ERR(29, 33, __pyx_L1_error)

  /* "include/Scatter2D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */
  __pyx_codeobj__821 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_reset, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__821)) __PYX_ERR(29, 42, __pyx_L1_error)

  /* "include/Scatter2D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__822 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_numPoints, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__822)) __PYX_ERR(29, 47, __pyx_L1_error)

  /* "include/Scatter2D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_codeobj__823 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_points, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__823)) __PYX_ERR(29, 56, __pyx_L1_error)

  /* "include/Scatter2D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */
  __pyx_codeobj__824 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_point, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__824)) __PYX_ERR(29, 60, __pyx_L1_error)

  /* "include/Scatter2D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_codeobj__825 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__781, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_addPoint, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__825)) __PYX_ERR(29, 69, __pyx_L1_error)

  /* "include/Scatter2D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 */
  __pyx_tuple__826 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_xerrs, __pyx_n_s_yerrs); if (unlikely(!__pyx_tuple__826)) __PYX_ERR(29, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__826);
  __Pyx_GIVEREF(__pyx_tuple__826);
  __pyx_codeobj__827 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__826, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_addPoint_explicit, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__827)) __PYX_ERR(29, 80, __pyx_L1_error)
  __pyx_tuple__828 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__828)) __PYX_ERR(29, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__828);
  __Pyx_GIVEREF(__pyx_tuple__828);

  /* "include/Scatter2D.pyx":83
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */
  __pyx_codeobj__829 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_addPoint_point, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__829)) __PYX_ERR(29, 83, __pyx_L1_error)

  /* "include/Scatter2D.pyx":86
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_codeobj__830 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__788, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_addPoints, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__830)) __PYX_ERR(29, 86, __pyx_L1_error)

  /* "include/Scatter2D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */
  __pyx_codeobj__831 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__790, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_rmPoint, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__831)) __PYX_ERR(29, 94, __pyx_L1_error)

  /* "include/Scatter2D.pyx":97
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */
  __pyx_codeobj__832 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__792, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_rmPoints, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__832)) __PYX_ERR(29, 97, __pyx_L1_error)

  /* "include/Scatter2D.pyx":100
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */
  __pyx_codeobj__833 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__794, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_combineWith, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__833)) __PYX_ERR(29, 100, __pyx_L1_error)

  /* "include/Scatter2D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_codeobj__834 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__796, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_mkScatter, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__834)) __PYX_ERR(29, 114, __pyx_L1_error)

  /* "include/Scatter2D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__835 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_scaleX, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__835)) __PYX_ERR(29, 122, __pyx_L1_error)

  /* "include/Scatter2D.pyx":127
 *         self.s2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__836 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_scaleY, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__836)) __PYX_ERR(29, 127, __pyx_L1_error)

  /* "include/Scatter2D.pyx":132
 *         self.s2ptr().scaleY(a)
 * 
 *     def scaleXY(self, ax=1.0, ay=1.0):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay."""
 */
  __pyx_tuple__837 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_ax, __pyx_n_s_ay); if (unlikely(!__pyx_tuple__837)) __PYX_ERR(29, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__837);
  __Pyx_GIVEREF(__pyx_tuple__837);
  __pyx_codeobj__838 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__837, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_scaleXY, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__838)) __PYX_ERR(29, 132, __pyx_L1_error)

  /* "include/Scatter2D.pyx":137
 *         self.s2ptr().scaleXY(ax, ay)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__839 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_scale, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__839)) __PYX_ERR(29, 137, __pyx_L1_error)

  /* "include/Scatter2D.pyx":143
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_codeobj__840 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_transformX, 143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__840)) __PYX_ERR(29, 143, __pyx_L1_error)

  /* "include/Scatter2D.pyx":154
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */
  __pyx_codeobj__841 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_transformY, 154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__841)) __PYX_ERR(29, 154, __pyx_L1_error)

  /* "include/Scatter2D.pyx":165
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */
  __pyx_codeobj__842 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_parseVariations, 165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__842)) __PYX_ERR(29, 165, __pyx_L1_error)

  /* "include/Scatter2D.pyx":171
 *         return self.s2ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_codeobj__843 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_updateTotalUncertainty, 171, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__843)) __PYX_ERR(29, 171, __pyx_L1_error)

  /* "include/Scatter2D.pyx":177
 *         return self.s2ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_codeobj__844 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_writeVariationsToAnnotations, 177, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__844)) __PYX_ERR(29, 177, __pyx_L1_error)

  /* "include/Scatter2D.pyx":183
 *         return self.s2ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_codeobj__845 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__805, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_variations, 183, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__845)) __PYX_ERR(29, 183, __pyx_L1_error)

  /* "include/Scatter2D.pyx":189
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_codeobj__846 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_rmVariations, 189, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__846)) __PYX_ERR(29, 189, __pyx_L1_error)

  /* "include/Scatter2D.pyx":194
 *         return self.s2ptr().rmVariations()
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__847 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_mknp, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__847)) __PYX_ERR(29, 194, __pyx_L1_error)

  /* "include/Scatter2D.pyx":202
 * 
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */
  __pyx_tuple__848 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_ignoreOffDiagonalTerms); if (unlikely(!__pyx_tuple__848)) __PYX_ERR(29, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__848);
  __Pyx_GIVEREF(__pyx_tuple__848);
  __pyx_codeobj__849 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__848, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_covarianceMatrix, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__849)) __PYX_ERR(29, 202, __pyx_L1_error)

  /* "include/Scatter2D.pyx":215
 *     #     return cutil.new_owned_cls(Scatter2D, c.Scatter2D_sub_Scatter2D(self.s2ptr(), other.s2ptr()))
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_codeobj__850 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__808, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_hasValidErrorBreakdown, 215, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__850)) __PYX_ERR(29, 215, __pyx_L1_error)

  /* "include/Scatter2D.pyx":234
 * 
 * 
 *     def correlationMatrix(self):             # <<<<<<<<<<<<<<
 *         """
 *         `covMatrix` numpy matrix
 */
  __pyx_tuple__851 = PyTuple_Pack(8, __pyx_n_s_self, __pyx_n_s_covMatrix, __pyx_n_s_nbins, __pyx_n_s_corr, __pyx_n_s_i, __pyx_n_s_sigma_i, __pyx_n_s_j, __pyx_n_s_sigma_j); if (unlikely(!__pyx_tuple__851)) __PYX_ERR(29, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__851);
  __Pyx_GIVEREF(__pyx_tuple__851);
  __pyx_codeobj__852 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__851, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_correlationMatrix, 234, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__852)) __PYX_ERR(29, 234, __pyx_L1_error)

  /* "include/Scatter2D.pyx":250
 * 
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_codeobj__853 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xVals, 250, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__853)) __PYX_ERR(29, 250, __pyx_L1_error)

  /* "include/Scatter2D.pyx":253
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__854 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xMins, 253, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__854)) __PYX_ERR(29, 253, __pyx_L1_error)

  /* "include/Scatter2D.pyx":258
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__855 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xMaxs, 258, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__855)) __PYX_ERR(29, 258, __pyx_L1_error)

  /* "include/Scatter2D.pyx":263
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__856 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xErrs, 263, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__856)) __PYX_ERR(29, 263, __pyx_L1_error)

  /* "include/Scatter2D.pyx":268
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All x average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__857 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xErrAvgs, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__857)) __PYX_ERR(29, 268, __pyx_L1_error)

  /* "include/Scatter2D.pyx":273
 *         return self._mknp([p.xErrAvg() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__858 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xMin, 273, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__858)) __PYX_ERR(29, 273, __pyx_L1_error)

  /* "include/Scatter2D.pyx":278
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__859 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_xMax, 278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__859)) __PYX_ERR(29, 278, __pyx_L1_error)

  /* "include/Scatter2D.pyx":284
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */
  __pyx_codeobj__860 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yVals, 284, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__860)) __PYX_ERR(29, 284, __pyx_L1_error)

  /* "include/Scatter2D.pyx":287
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__861 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yMins, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__861)) __PYX_ERR(29, 287, __pyx_L1_error)

  /* "include/Scatter2D.pyx":292
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__862 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yMaxs, 292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__862)) __PYX_ERR(29, 292, __pyx_L1_error)

  /* "include/Scatter2D.pyx":297
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__863 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yErrs, 297, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__863)) __PYX_ERR(29, 297, __pyx_L1_error)

  /* "include/Scatter2D.pyx":302
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All y average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__864 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yErrAvgs, 302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__864)) __PYX_ERR(29, 302, __pyx_L1_error)

  /* "include/Scatter2D.pyx":307
 *         return self._mknp([p.yErrAvg() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__865 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yMin, 307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__865)) __PYX_ERR(29, 307, __pyx_L1_error)

  /* "include/Scatter2D.pyx":312
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_codeobj__866 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter2D_pyx, __pyx_n_s_yMax, 312, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__866)) __PYX_ERR(29, 312, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__867 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__867)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__868 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__868)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Scatter3D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_codeobj__869 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__218, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_init_2, 24, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__869)) __PYX_ERR(30, 24, __pyx_L1_error)

  /* "include/Scatter3D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, char* path="", char* title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_codeobj__870 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__774, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_init_3, 29, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__870)) __PYX_ERR(30, 29, __pyx_L1_error)
  __pyx_tuple__871 = PyTuple_Pack(2, __pyx_kp_b__2, __pyx_kp_b__2); if (unlikely(!__pyx_tuple__871)) __PYX_ERR(30, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__871);
  __Pyx_GIVEREF(__pyx_tuple__871);

  /* "include/Scatter3D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter3D.
 *         Clone this Scatter3D."""
 */
  __pyx_codeobj__872 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_clone, 33, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__872)) __PYX_ERR(30, 33, __pyx_L1_error)

  /* "include/Scatter3D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */
  __pyx_codeobj__873 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_reset, 42, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__873)) __PYX_ERR(30, 42, __pyx_L1_error)

  /* "include/Scatter3D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_codeobj__874 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_numPoints, 47, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__874)) __PYX_ERR(30, 47, __pyx_L1_error)

  /* "include/Scatter3D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_codeobj__875 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_points, 56, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__875)) __PYX_ERR(30, 56, __pyx_L1_error)

  /* "include/Scatter3D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */
  __pyx_codeobj__876 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__258, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_point, 60, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__876)) __PYX_ERR(30, 60, __pyx_L1_error)

  /* "include/Scatter3D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_codeobj__877 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS|CO_VARKEYWORDS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__781, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_addPoint, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__877)) __PYX_ERR(30, 69, __pyx_L1_error)

  /* "include/Scatter3D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 */
  __pyx_tuple__878 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_z, __pyx_n_s_xerrs, __pyx_n_s_yerrs, __pyx_n_s_zerrs); if (unlikely(!__pyx_tuple__878)) __PYX_ERR(30, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__878);
  __Pyx_GIVEREF(__pyx_tuple__878);
  __pyx_codeobj__879 = (PyObject*)__Pyx_PyCode_New(7, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__878, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_addPoint_explicit, 80, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__879)) __PYX_ERR(30, 80, __pyx_L1_error)
  __pyx_tuple__880 = PyTuple_Pack(3, __pyx_int_0, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__880)) __PYX_ERR(30, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__880);
  __Pyx_GIVEREF(__pyx_tuple__880);

  /* "include/Scatter3D.pyx":83
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */
  __pyx_codeobj__881 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_addPoint_point, 83, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__881)) __PYX_ERR(30, 83, __pyx_L1_error)

  /* "include/Scatter3D.pyx":86
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_codeobj__882 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__788, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_addPoints, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__882)) __PYX_ERR(30, 86, __pyx_L1_error)

  /* "include/Scatter3D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */
  __pyx_codeobj__883 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__790, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_rmPoint, 94, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__883)) __PYX_ERR(30, 94, __pyx_L1_error)

  /* "include/Scatter3D.pyx":97
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */
  __pyx_codeobj__884 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__792, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_rmPoints, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__884)) __PYX_ERR(30, 97, __pyx_L1_error)

  /* "include/Scatter3D.pyx":100
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */
  __pyx_codeobj__885 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__794, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_combineWith, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__885)) __PYX_ERR(30, 100, __pyx_L1_error)

  /* "include/Scatter3D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_tuple__886 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_s3); if (unlikely(!__pyx_tuple__886)) __PYX_ERR(30, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__886);
  __Pyx_GIVEREF(__pyx_tuple__886);
  __pyx_codeobj__887 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__886, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_mkScatter, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__887)) __PYX_ERR(30, 114, __pyx_L1_error)

  /* "include/Scatter3D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__888 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_scaleX, 122, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__888)) __PYX_ERR(30, 122, __pyx_L1_error)

  /* "include/Scatter3D.pyx":127
 *         self.s3ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__889 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_scaleY, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__889)) __PYX_ERR(30, 127, __pyx_L1_error)

  /* "include/Scatter3D.pyx":132
 *         self.s3ptr().scaleY(a)
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */
  __pyx_codeobj__890 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_scaleZ, 132, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__890)) __PYX_ERR(30, 132, __pyx_L1_error)

  /* "include/Scatter3D.pyx":137
 *         self.s3ptr().scaleZ(a)
 * 
 *     def scaleXYZ(self, ax=1, ay=1, az=1):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay, az."""
 */
  __pyx_codeobj__891 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__767, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_scaleXYZ, 137, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__891)) __PYX_ERR(30, 137, __pyx_L1_error)
  __pyx_tuple__892 = PyTuple_Pack(3, __pyx_int_1, __pyx_int_1, __pyx_int_1); if (unlikely(!__pyx_tuple__892)) __PYX_ERR(30, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__892);
  __Pyx_GIVEREF(__pyx_tuple__892);

  /* "include/Scatter3D.pyx":142
 *         self.s3ptr().scaleXYZ(ax, ay, az)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_codeobj__893 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__692, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_scale, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__893)) __PYX_ERR(30, 142, __pyx_L1_error)

  /* "include/Scatter3D.pyx":148
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_codeobj__894 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_transformX, 148, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__894)) __PYX_ERR(30, 148, __pyx_L1_error)

  /* "include/Scatter3D.pyx":159
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */
  __pyx_codeobj__895 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_transformY, 159, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__895)) __PYX_ERR(30, 159, __pyx_L1_error)

  /* "include/Scatter3D.pyx":170
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def transformZ(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the z values and errors of the points in this scatter by function f."""
 */
  __pyx_codeobj__896 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__800, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_transformZ, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__896)) __PYX_ERR(30, 170, __pyx_L1_error)

  /* "include/Scatter3D.pyx":190
 *     #     return cutil.new_owned_cls(Scatter3D, c.Scatter3D_sub_Scatter3D(self.s3ptr(), other.s3ptr()))
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_codeobj__897 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_updateTotalUncertainty, 190, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__897)) __PYX_ERR(30, 190, __pyx_L1_error)

  /* "include/Scatter3D.pyx":196
 *         return self.s3ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_codeobj__898 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_writeVariationsToAnnotations, 196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__898)) __PYX_ERR(30, 196, __pyx_L1_error)

  /* "include/Scatter3D.pyx":202
 *         return self.s3ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_codeobj__899 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__805, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_variations, 202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__899)) __PYX_ERR(30, 202, __pyx_L1_error)

  /* "include/Scatter3D.pyx":208
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_codeobj__900 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_rmVariations, 208, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__900)) __PYX_ERR(30, 208, __pyx_L1_error)

  /* "include/Scatter3D.pyx":213
 *         return self.s3ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_codeobj__901 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__808, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_hasValidErrorBreakdown, 213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__901)) __PYX_ERR(30, 213, __pyx_L1_error)

  /* "include/Scatter3D.pyx":231
 *         return True
 * 
 *     def covarianceMatrix(self, *ignoreOffDiagonalTerms):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */
  __pyx_codeobj__902 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__848, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_covarianceMatrix, 231, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__902)) __PYX_ERR(30, 231, __pyx_L1_error)

  /* "include/Scatter3D.pyx":237
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_codeobj__903 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__290, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_mknp, 237, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__903)) __PYX_ERR(30, 237, __pyx_L1_error)

  /* "include/Scatter3D.pyx":244
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_codeobj__904 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xVals, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__904)) __PYX_ERR(30, 244, __pyx_L1_error)

  /* "include/Scatter3D.pyx":247
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */
  __pyx_codeobj__905 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xMins, 247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__905)) __PYX_ERR(30, 247, __pyx_L1_error)

  /* "include/Scatter3D.pyx":251
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */
  __pyx_codeobj__906 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xMaxs, 251, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__906)) __PYX_ERR(30, 251, __pyx_L1_error)

  /* "include/Scatter3D.pyx":255
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x errors"""
 *         return self._mknp([p.xErrs() for p in self.points()])
 */
  __pyx_codeobj__907 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xErrs, 255, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__907)) __PYX_ERR(30, 255, __pyx_L1_error)

  /* "include/Scatter3D.pyx":259
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_codeobj__908 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xMin, 259, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__908)) __PYX_ERR(30, 259, __pyx_L1_error)

  /* "include/Scatter3D.pyx":263
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_codeobj__909 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_xMax, 263, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__909)) __PYX_ERR(30, 263, __pyx_L1_error)

  /* "include/Scatter3D.pyx":268
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */
  __pyx_codeobj__910 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yVals, 268, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__910)) __PYX_ERR(30, 268, __pyx_L1_error)

  /* "include/Scatter3D.pyx":271
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.yMin() for p in self.points()])
 */
  __pyx_codeobj__911 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yMins, 271, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__911)) __PYX_ERR(30, 271, __pyx_L1_error)

  /* "include/Scatter3D.pyx":275
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.yMax() for p in self.points()])
 */
  __pyx_codeobj__912 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yMaxs, 275, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__912)) __PYX_ERR(30, 275, __pyx_L1_error)

  /* "include/Scatter3D.pyx":279
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y errors"""
 *         return self._mknp([p.yErrs() for p in self.points()])
 */
  __pyx_codeobj__913 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yErrs, 279, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__913)) __PYX_ERR(30, 279, __pyx_L1_error)

  /* "include/Scatter3D.pyx":283
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */
  __pyx_codeobj__914 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yMin, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__914)) __PYX_ERR(30, 283, __pyx_L1_error)

  /* "include/Scatter3D.pyx":287
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */
  __pyx_codeobj__915 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_yMax, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__915)) __PYX_ERR(30, 287, __pyx_L1_error)

  /* "include/Scatter3D.pyx":292
 * 
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.z() for p in self.points()])
 * 
 */
  __pyx_codeobj__916 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zVals, 292, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__916)) __PYX_ERR(30, 292, __pyx_L1_error)

  /* "include/Scatter3D.pyx":295
 *         return self._mknp([p.z() for p in self.points()])
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp([p.zMin() for p in self.points()])
 */
  __pyx_codeobj__917 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zMins, 295, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__917)) __PYX_ERR(30, 295, __pyx_L1_error)

  /* "include/Scatter3D.pyx":299
 *         return self._mknp([p.zMin() for p in self.points()])
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp([p.zMax() for p in self.points()])
 */
  __pyx_codeobj__918 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zMaxs, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__918)) __PYX_ERR(30, 299, __pyx_L1_error)

  /* "include/Scatter3D.pyx":303
 *         return self._mknp([p.zMax() for p in self.points()])
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """All z errors"""
 *         return self._mknp([p.zErrs() for p in self.points()])
 */
  __pyx_codeobj__919 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__786, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zErrs, 303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__919)) __PYX_ERR(30, 303, __pyx_L1_error)

  /* "include/Scatter3D.pyx":307
 *         return self._mknp([p.zErrs() for p in self.points()])
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins())
 */
  __pyx_codeobj__920 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zMin, 307, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__920)) __PYX_ERR(30, 307, __pyx_L1_error)

  /* "include/Scatter3D.pyx":311
 *         return min(self.zMins())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs())
 */
  __pyx_codeobj__921 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Scatter3D_pyx, __pyx_n_s_zMax, 311, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__921)) __PYX_ERR(30, 311, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_codeobj__922 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_reduce_cython, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__922)) __PYX_ERR(0, 1, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_codeobj__923 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_stringsource, __pyx_n_s_setstate_cython, 3, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__923)) __PYX_ERR(0, 3, __pyx_L1_error)

  /* "include/Functions.pyx":1
 * def mkScatter(ao, usefocus=False, p_usestddev=False, h_binsizediv=True, uflow_binwidth=-1., oflow_binwidth=-1.):             # <<<<<<<<<<<<<<
 *     """AnalysisObject -> Scatter{1,2,3}D
 *     Convert an AnalysisObject to a Scatter, using the logic of the bound mkScatter methods.
 */
  __pyx_tuple__924 = PyTuple_Pack(7, __pyx_n_s_ao, __pyx_n_s_usefocus, __pyx_n_s_p_usestddev, __pyx_n_s_h_binsizediv, __pyx_n_s_uflow_binwidth, __pyx_n_s_oflow_binwidth, __pyx_n_s_s); if (unlikely(!__pyx_tuple__924)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__924);
  __Pyx_GIVEREF(__pyx_tuple__924);
  __pyx_codeobj__925 = (PyObject*)__Pyx_PyCode_New(6, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__924, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_mkScatter, 1, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__925)) __PYX_ERR(5, 1, __pyx_L1_error)
  __pyx_tuple__926 = PyTuple_Pack(5, ((PyObject *)Py_False), ((PyObject *)Py_False), ((PyObject *)Py_True), ((PyObject*)__pyx_float_neg_1_), ((PyObject*)__pyx_float_neg_1_)); if (unlikely(!__pyx_tuple__926)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__926);
  __Pyx_GIVEREF(__pyx_tuple__926);

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D
 *     Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_tuple__927 = PyTuple_Pack(2, __pyx_n_s_ao1, __pyx_n_s_ao2); if (unlikely(!__pyx_tuple__927)) __PYX_ERR(5, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__927);
  __Pyx_GIVEREF(__pyx_tuple__927);
  __pyx_codeobj__928 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__927, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_divide, 26, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__928)) __PYX_ERR(5, 26, __pyx_L1_error)

  /* "include/Functions.pyx":55
 * 
 * 
 * def linspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and
 */
  __pyx_tuple__929 = PyTuple_Pack(3, __pyx_n_s_nbins, __pyx_n_s_xmin, __pyx_n_s_xmax); if (unlikely(!__pyx_tuple__929)) __PYX_ERR(5, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__929);
  __Pyx_GIVEREF(__pyx_tuple__929);
  __pyx_codeobj__930 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__929, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_linspace, 55, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__930)) __PYX_ERR(5, 55, __pyx_L1_error)

  /* "include/Functions.pyx":62
 * 
 * 
 * def logspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with
 */
  __pyx_codeobj__931 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__929, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_logspace, 62, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__931)) __PYX_ERR(5, 62, __pyx_L1_error)

  /* "include/Functions.pyx":69
 * 
 * 
 * def pdfspace(nbins, xmin, xmax, fn, nsample=10000):             # <<<<<<<<<<<<<<
 *     """(int, float, float, [int]) -> list[float]
 *     Make a list of n+1 bin edges spaced with density proportional to fn(x) between
 */
  __pyx_tuple__932 = PyTuple_Pack(14, __pyx_n_s_nbins, __pyx_n_s_xmin, __pyx_n_s_xmax, __pyx_n_s_fn, __pyx_n_s_nsample, __pyx_n_s_dx, __pyx_n_s_xs, __pyx_n_s_ys, __pyx_n_s_areas, __pyx_n_s_da, __pyx_n_s_asum, __pyx_n_s_xedges, __pyx_n_s_i, __pyx_n_s_x); if (unlikely(!__pyx_tuple__932)) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__932);
  __Pyx_GIVEREF(__pyx_tuple__932);
  __pyx_codeobj__933 = (PyObject*)__Pyx_PyCode_New(5, 0, 0, 14, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__932, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_pdfspace, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__933)) __PYX_ERR(5, 69, __pyx_L1_error)
  __pyx_tuple__934 = PyTuple_Pack(1, ((PyObject *)__pyx_int_10000)); if (unlikely(!__pyx_tuple__934)) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__934);
  __Pyx_GIVEREF(__pyx_tuple__934);

  /* "include/Functions.pyx":99
 * 
 * 
 * def index_between(x, binedges):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the index of the bin which would contain x, or -1 if there is no enclosing
 */
  __pyx_tuple__935 = PyTuple_Pack(2, __pyx_n_s_x, __pyx_n_s_binedges); if (unlikely(!__pyx_tuple__935)) __PYX_ERR(5, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__935);
  __Pyx_GIVEREF(__pyx_tuple__935);
  __pyx_codeobj__936 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__935, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_index_between, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__936)) __PYX_ERR(5, 99, __pyx_L1_error)

  /* "include/Functions.pyx":106
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */
  __pyx_tuple__937 = PyTuple_Pack(1, __pyx_n_s_sample); if (unlikely(!__pyx_tuple__937)) __PYX_ERR(5, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__937);
  __Pyx_GIVEREF(__pyx_tuple__937);
  __pyx_codeobj__938 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__937, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_mean, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__938)) __PYX_ERR(5, 106, __pyx_L1_error)

  /* "include/Functions.pyx":112
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */
  __pyx_tuple__939 = PyTuple_Pack(2, __pyx_n_s_sample1, __pyx_n_s_sample2); if (unlikely(!__pyx_tuple__939)) __PYX_ERR(5, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__939);
  __Pyx_GIVEREF(__pyx_tuple__939);
  __pyx_codeobj__940 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__939, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_covariance, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__940)) __PYX_ERR(5, 112, __pyx_L1_error)

  /* "include/Functions.pyx":118
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */
  __pyx_codeobj__941 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__939, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_Functions_pyx, __pyx_n_s_correlation, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__941)) __PYX_ERR(5, 118, __pyx_L1_error)

  /* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */
  __pyx_tuple__942 = PyTuple_Pack(7, __pyx_n_s_name_2, __pyx_n_s_patterns, __pyx_n_s_unpatterns, __pyx_n_s_re, __pyx_n_s_genexpr, __pyx_n_s_genexpr, __pyx_n_s_genexpr); if (unlikely(!__pyx_tuple__942)) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__942);
  __Pyx_GIVEREF(__pyx_tuple__942);
  __pyx_codeobj__943 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__942, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_pattern_check, 17, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__943)) __PYX_ERR(6, 17, __pyx_L1_error)

  /* "include/IO.pyx":86
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */
  __pyx_tuple__944 = PyTuple_Pack(3, __pyx_n_s_file_or_filename, __pyx_n_s_s, __pyx_n_s_f); if (unlikely(!__pyx_tuple__944)) __PYX_ERR(6, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__944);
  __Pyx_GIVEREF(__pyx_tuple__944);
  __pyx_codeobj__945 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__944, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_bytestr_from_file, 86, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__945)) __PYX_ERR(6, 86, __pyx_L1_error)

  /* "include/IO.pyx":105
 * 
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */
  __pyx_tuple__946 = PyTuple_Pack(3, __pyx_n_s_s, __pyx_n_s_file_or_filename, __pyx_n_s_f); if (unlikely(!__pyx_tuple__946)) __PYX_ERR(6, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__946);
  __Pyx_GIVEREF(__pyx_tuple__946);
  __pyx_codeobj__947 = (PyObject*)__Pyx_PyCode_New(2, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__946, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_str_to_file, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__947)) __PYX_ERR(6, 105, __pyx_L1_error)

  /* "include/IO.pyx":121
 * 
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */
  __pyx_tuple__948 = PyTuple_Pack(1, __pyx_n_s_x); if (unlikely(!__pyx_tuple__948)) __PYX_ERR(6, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__948);
  __Pyx_GIVEREF(__pyx_tuple__948);
  __pyx_codeobj__949 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__948, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_istxt, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__949)) __PYX_ERR(6, 121, __pyx_L1_error)

  /* "include/IO.pyx":127
 *         return type(x) is str
 * 
 * def _mktxtifstr(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x
 */
  __pyx_codeobj__950 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__948, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_mktxtifstr, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__950)) __PYX_ERR(6, 127, __pyx_L1_error)

  /* "include/IO.pyx":138
 * ##
 * 
 * def read(filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */
  __pyx_tuple__951 = PyTuple_Pack(9, __pyx_n_s_filename, __pyx_n_s_asdict, __pyx_n_s_patterns, __pyx_n_s_unpatterns, __pyx_n_s_aobjects, __pyx_n_s_iss, __pyx_n_s_s, __pyx_n_s_d, __pyx_n_s_collections); if (unlikely(!__pyx_tuple__951)) __PYX_ERR(6, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__951);
  __Pyx_GIVEREF(__pyx_tuple__951);
  __pyx_codeobj__952 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 9, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__951, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_read, 138, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__952)) __PYX_ERR(6, 138, __pyx_L1_error)
  __pyx_tuple__953 = PyTuple_Pack(3, ((PyObject *)Py_True), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__953)) __PYX_ERR(6, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__953);
  __Pyx_GIVEREF(__pyx_tuple__953);

  /* "include/IO.pyx":173
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */
  __pyx_tuple__954 = PyTuple_Pack(7, __pyx_n_s_file_or_filename, __pyx_n_s_asdict, __pyx_n_s_patterns, __pyx_n_s_unpatterns, __pyx_n_s_iss, __pyx_n_s_aobjects, __pyx_n_s_s); if (unlikely(!__pyx_tuple__954)) __PYX_ERR(6, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__954);
  __Pyx_GIVEREF(__pyx_tuple__954);
  __pyx_codeobj__955 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__954, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_readYODA, 173, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__955)) __PYX_ERR(6, 173, __pyx_L1_error)
  __pyx_tuple__956 = PyTuple_Pack(3, ((PyObject *)Py_True), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__956)) __PYX_ERR(6, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__956);
  __Pyx_GIVEREF(__pyx_tuple__956);

  /* "include/IO.pyx":194
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */
  __pyx_codeobj__957 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__954, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_readFLAT, 194, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__957)) __PYX_ERR(6, 194, __pyx_L1_error)
  __pyx_tuple__958 = PyTuple_Pack(3, ((PyObject *)Py_True), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__958)) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__958);
  __Pyx_GIVEREF(__pyx_tuple__958);

  /* "include/IO.pyx":216
 * 
 * 
 * def readAIDA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided AIDA-format file.
 */
  __pyx_codeobj__959 = (PyObject*)__Pyx_PyCode_New(4, 0, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__954, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_readAIDA, 216, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__959)) __PYX_ERR(6, 216, __pyx_L1_error)
  __pyx_tuple__960 = PyTuple_Pack(3, ((PyObject *)Py_True), ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__960)) __PYX_ERR(6, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__960);
  __Pyx_GIVEREF(__pyx_tuple__960);

  /* "include/IO.pyx":244
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */
  __pyx_tuple__961 = PyTuple_Pack(8, __pyx_n_s_ana_objs, __pyx_n_s_filename, __pyx_n_s_precision, __pyx_n_s_vec, __pyx_n_s_a, __pyx_n_s_aolist, __pyx_n_s_key, __pyx_n_s_ao); if (unlikely(!__pyx_tuple__961)) __PYX_ERR(6, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__961);
  __Pyx_GIVEREF(__pyx_tuple__961);
  __pyx_codeobj__962 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__961, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_write, 244, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__962)) __PYX_ERR(6, 244, __pyx_L1_error)
  __pyx_tuple__963 = PyTuple_Pack(1, ((PyObject *)__pyx_int_neg_1)); if (unlikely(!__pyx_tuple__963)) __PYX_ERR(6, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__963);
  __Pyx_GIVEREF(__pyx_tuple__963);

  /* "include/IO.pyx":260
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */
  __pyx_tuple__964 = PyTuple_Pack(8, __pyx_n_s_ana_objs, __pyx_n_s_file_or_filename, __pyx_n_s_precision, __pyx_n_s_oss, __pyx_n_s_w, __pyx_n_s_vec, __pyx_n_s_a, __pyx_n_s_aolist); if (unlikely(!__pyx_tuple__964)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__964);
  __Pyx_GIVEREF(__pyx_tuple__964);
  __pyx_codeobj__965 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__964, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeYODA, 260, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__965)) __PYX_ERR(6, 260, __pyx_L1_error)
  __pyx_tuple__966 = PyTuple_Pack(1, ((PyObject *)__pyx_int_neg_1)); if (unlikely(!__pyx_tuple__966)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__966);
  __Pyx_GIVEREF(__pyx_tuple__966);

  /* "include/IO.pyx":281
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */
  __pyx_codeobj__967 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__964, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeFLAT, 281, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__967)) __PYX_ERR(6, 281, __pyx_L1_error)
  __pyx_tuple__968 = PyTuple_Pack(1, ((PyObject *)__pyx_int_neg_1)); if (unlikely(!__pyx_tuple__968)) __PYX_ERR(6, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__968);
  __Pyx_GIVEREF(__pyx_tuple__968);

  /* "include/IO.pyx":303
 * 
 * # TODO: remove
 * def writeAIDA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in AIDA format.
 */
  __pyx_codeobj__969 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 8, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__964, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_writeAIDA, 303, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__969)) __PYX_ERR(6, 303, __pyx_L1_error)
  __pyx_tuple__970 = PyTuple_Pack(1, ((PyObject *)__pyx_int_neg_1)); if (unlikely(!__pyx_tuple__970)) __PYX_ERR(6, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__970);
  __Pyx_GIVEREF(__pyx_tuple__970);

  /* "include/IO.pyx":331
 *     Index of a file.
 *     """
 *     def __init__(self, index_map, repr_string):             # <<<<<<<<<<<<<<
 *         self.index_map = index_map
 *         self.repr_string = repr_string
 */
  __pyx_tuple__971 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_index_map, __pyx_n_s_repr_string); if (unlikely(!__pyx_tuple__971)) __PYX_ERR(6, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__971);
  __Pyx_GIVEREF(__pyx_tuple__971);
  __pyx_codeobj__972 = (PyObject*)__Pyx_PyCode_New(3, 0, 0, 3, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__971, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_init, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__972)) __PYX_ERR(6, 331, __pyx_L1_error)

  /* "include/IO.pyx":335
 *         self.repr_string = repr_string
 * 
 *     def toDict(self):             # <<<<<<<<<<<<<<
 *         """\
 *         Get a dictionary containing the index structure
 */
  __pyx_codeobj__973 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_toDict, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__973)) __PYX_ERR(6, 335, __pyx_L1_error)

  /* "include/IO.pyx":351
 *         return self.index_map
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get string representation of file index.
 */
  __pyx_codeobj__974 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__18, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_repr, 351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__974)) __PYX_ERR(6, 351, __pyx_L1_error)

  /* "include/IO.pyx":400
 *     return {"dict" : indexDict, "str" : indexStr}
 * 
 * def mkIndexYODA(filename):             # <<<<<<<<<<<<<<
 *     """
 *     Generate Index object for the provided YODA-format file.
 */
  __pyx_tuple__975 = PyTuple_Pack(2, __pyx_n_s_filename, __pyx_n_s_idx); if (unlikely(!__pyx_tuple__975)) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_tuple__975);
  __Pyx_GIVEREF(__pyx_tuple__975);
  __pyx_codeobj__976 = (PyObject*)__Pyx_PyCode_New(1, 0, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__975, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_include_IO_pyx, __pyx_n_s_mkIndexYODA, 400, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__976)) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static CYTHON_SMALL_CODE int __Pyx_InitConstants(void) {
  __pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type;
  __pyx_umethod_PyDict_Type_items.method_name = &__pyx_n_s_items;
  __pyx_umethod_PyList_Type_reshape.type = (PyObject*)&PyList_Type;
  __pyx_umethod_PyList_Type_reshape.method_name = &__pyx_n_s_reshape;
  if (__Pyx_CreateStringTabAndInitStrings() < 0) __PYX_ERR(8, 1, __pyx_L1_error);
  __pyx_float_0_ = PyFloat_FromDouble(0.); if (unlikely(!__pyx_float_0_)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_float_2_ = PyFloat_FromDouble(2.); if (unlikely(!__pyx_float_2_)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_float_1_0 = PyFloat_FromDouble(1.0); if (unlikely(!__pyx_float_1_0)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_float_neg_1_ = PyFloat_FromDouble(-1.); if (unlikely(!__pyx_float_neg_1_)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_10000 = PyInt_FromLong(10000L); if (unlikely(!__pyx_int_10000)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) __PYX_ERR(8, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_globals ### */

static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void) {
  /* AssertionsEnabled.init */
  __Pyx_init_assertions_enabled();

if (unlikely(PyErr_Occurred())) __PYX_ERR(8, 1, __pyx_L1_error)

  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_module ### */

static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(void); /*proto*/

static int __Pyx_modinit_global_init_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  YodaExc_Exception = Py_None; Py_INCREF(Py_None);
  YodaExc_BinningError = Py_None; Py_INCREF(Py_None);
  YodaExc_RangeError = Py_None; Py_INCREF(Py_None);
  YodaExc_LockError = Py_None; Py_INCREF(Py_None);
  YodaExc_GridError = Py_None; Py_INCREF(Py_None);
  YodaExc_LogicError = Py_None; Py_INCREF(Py_None);
  YodaExc_LowStatsError = Py_None; Py_INCREF(Py_None);
  YodaExc_WeightError = Py_None; Py_INCREF(Py_None);
  YodaExc_AnnotationError = Py_None; Py_INCREF(Py_None);
  YodaExc_ReadError = Py_None; Py_INCREF(Py_None);
  YodaExc_UserError = Py_None; Py_INCREF(Py_None);
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_init_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __pyx_t_1 = PyImport_ImportModule("yoda.util"); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_4yoda_4util_Base = __Pyx_ImportType_3_0_0(__pyx_t_1, "yoda.util", "Base", sizeof(struct __pyx_obj_4yoda_4util_Base), __PYX_GET_STRUCT_ALIGNMENT_3_0_0(struct __pyx_obj_4yoda_4util_Base),__Pyx_ImportType_CheckSize_Warn_3_0_0); if (!__pyx_ptype_4yoda_4util_Base) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_vtabptr_4yoda_4util_Base = (struct __pyx_vtabstruct_4yoda_4util_Base*)__Pyx_GetVtable(__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_vtabptr_4yoda_4util_Base)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_vtabptr_4yoda_4core_Dbn0D = &__pyx_vtable_4yoda_4core_Dbn0D;
  __pyx_vtable_4yoda_4core_Dbn0D.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Dbn0D.d0ptr = (YODA::Dbn0D *(*)(struct __pyx_obj_4yoda_4core_Dbn0D *))__pyx_f_4yoda_4core_5Dbn0D_d0ptr;
  __pyx_vtable_4yoda_4core_Dbn0D._Dbn0D = (YODA::Dbn0D *(*)(struct __pyx_obj_4yoda_4core_Dbn0D *))__pyx_f_4yoda_4core_5Dbn0D__Dbn0D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Dbn0D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Dbn0D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Dbn0D)) __PYX_ERR(9, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Dbn0D_spec, __pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Dbn0D = &__pyx_type_4yoda_4core_Dbn0D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Dbn0D->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Dbn0D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Dbn0D->tp_dictoffset && __pyx_ptype_4yoda_4core_Dbn0D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Dbn0D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Dbn0D, __pyx_vtabptr_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn0D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn0D) < 0) __PYX_ERR(9, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Dbn1D = &__pyx_vtable_4yoda_4core_Dbn1D;
  __pyx_vtable_4yoda_4core_Dbn1D.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Dbn1D.d1ptr = (YODA::Dbn1D *(*)(struct __pyx_obj_4yoda_4core_Dbn1D *))__pyx_f_4yoda_4core_5Dbn1D_d1ptr;
  __pyx_vtable_4yoda_4core_Dbn1D._Dbn1D = (YODA::Dbn1D *(*)(struct __pyx_obj_4yoda_4core_Dbn1D *))__pyx_f_4yoda_4core_5Dbn1D__Dbn1D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Dbn1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Dbn1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Dbn1D)) __PYX_ERR(10, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Dbn1D_spec, __pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Dbn1D = &__pyx_type_4yoda_4core_Dbn1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Dbn1D->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Dbn1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Dbn1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Dbn1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Dbn1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Dbn1D, __pyx_vtabptr_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn1D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn1D) < 0) __PYX_ERR(10, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Dbn2D = &__pyx_vtable_4yoda_4core_Dbn2D;
  __pyx_vtable_4yoda_4core_Dbn2D.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Dbn2D.d2ptr = (YODA::Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Dbn2D *))__pyx_f_4yoda_4core_5Dbn2D_d2ptr;
  __pyx_vtable_4yoda_4core_Dbn2D._Dbn2D = (YODA::Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Dbn2D *))__pyx_f_4yoda_4core_5Dbn2D__Dbn2D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Dbn2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Dbn2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Dbn2D)) __PYX_ERR(11, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Dbn2D_spec, __pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Dbn2D = &__pyx_type_4yoda_4core_Dbn2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Dbn2D->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Dbn2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Dbn2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Dbn2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Dbn2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Dbn2D, __pyx_vtabptr_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn2D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn2D) < 0) __PYX_ERR(11, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Dbn3D = &__pyx_vtable_4yoda_4core_Dbn3D;
  __pyx_vtable_4yoda_4core_Dbn3D.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Dbn3D.d3ptr = (YODA::Dbn3D *(*)(struct __pyx_obj_4yoda_4core_Dbn3D *))__pyx_f_4yoda_4core_5Dbn3D_d3ptr;
  __pyx_vtable_4yoda_4core_Dbn3D._Dbn3D = (YODA::Dbn3D *(*)(struct __pyx_obj_4yoda_4core_Dbn3D *))__pyx_f_4yoda_4core_5Dbn3D__Dbn3D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Dbn3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Dbn3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Dbn3D)) __PYX_ERR(12, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Dbn3D_spec, __pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Dbn3D = &__pyx_type_4yoda_4core_Dbn3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Dbn3D->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Dbn3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Dbn3D->tp_dictoffset && __pyx_ptype_4yoda_4core_Dbn3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Dbn3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Dbn3D, __pyx_vtabptr_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Dbn3D, (PyObject *) __pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Dbn3D) < 0) __PYX_ERR(12, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Bin = &__pyx_vtable_4yoda_4core_Bin;
  __pyx_vtable_4yoda_4core_Bin.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Bin.bptr = (YODA::Bin *(*)(struct __pyx_obj_4yoda_4core_Bin *))__pyx_f_4yoda_4core_3Bin_bptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Bin = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Bin_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Bin)) __PYX_ERR(14, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Bin_spec, __pyx_ptype_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Bin = &__pyx_type_4yoda_4core_Bin;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Bin->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Bin->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Bin->tp_dictoffset && __pyx_ptype_4yoda_4core_Bin->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Bin->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Bin, __pyx_vtabptr_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Bin, (PyObject *) __pyx_ptype_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Bin) < 0) __PYX_ERR(14, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Bin1D_Dbn1D = &__pyx_vtable_4yoda_4core_Bin1D_Dbn1D;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn1D.b1ptr = (__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *(*)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *))__pyx_f_4yoda_4core_11Bin1D_Dbn1D_b1ptr;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn1D._Bin1D = (__pyx_t_4yoda_12declarations_Bin1D_Dbn1D *(*)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn1D *))__pyx_f_4yoda_4core_11Bin1D_Dbn1D__Bin1D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Bin1D_Dbn1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Bin1D_Dbn1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Bin1D_Dbn1D)) __PYX_ERR(15, 8, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Bin1D_Dbn1D_spec, __pyx_ptype_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Bin1D_Dbn1D = &__pyx_type_4yoda_4core_Bin1D_Dbn1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_base = __pyx_ptype_4yoda_4core_Bin;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D, __pyx_vtabptr_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Bin1D_Dbn1D, (PyObject *) __pyx_ptype_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Bin1D_Dbn1D) < 0) __PYX_ERR(15, 8, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Bin1D_Dbn2D = &__pyx_vtable_4yoda_4core_Bin1D_Dbn2D;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn2D.b1ptr = (__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *))__pyx_f_4yoda_4core_11Bin1D_Dbn2D_b1ptr;
  __pyx_vtable_4yoda_4core_Bin1D_Dbn2D._Bin1D = (__pyx_t_4yoda_12declarations_Bin1D_Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Bin1D_Dbn2D *))__pyx_f_4yoda_4core_11Bin1D_Dbn2D__Bin1D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Bin1D_Dbn2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Bin1D_Dbn2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Bin1D_Dbn2D)) __PYX_ERR(16, 8, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Bin1D_Dbn2D_spec, __pyx_ptype_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Bin1D_Dbn2D = &__pyx_type_4yoda_4core_Bin1D_Dbn2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_base = __pyx_ptype_4yoda_4core_Bin;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D, __pyx_vtabptr_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Bin1D_Dbn2D, (PyObject *) __pyx_ptype_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Bin1D_Dbn2D) < 0) __PYX_ERR(16, 8, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_HistoBin1D = &__pyx_vtable_4yoda_4core_HistoBin1D;
  __pyx_vtable_4yoda_4core_HistoBin1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin1D_Dbn1D;
  __pyx_vtable_4yoda_4core_HistoBin1D.hb1ptr = (YODA::HistoBin1D *(*)(struct __pyx_obj_4yoda_4core_HistoBin1D *))__pyx_f_4yoda_4core_10HistoBin1D_hb1ptr;
  __pyx_vtable_4yoda_4core_HistoBin1D._HistoBin1D = (YODA::HistoBin1D *(*)(struct __pyx_obj_4yoda_4core_HistoBin1D *))__pyx_f_4yoda_4core_10HistoBin1D__HistoBin1D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_HistoBin1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_HistoBin1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_HistoBin1D)) __PYX_ERR(17, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_HistoBin1D_spec, __pyx_ptype_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_HistoBin1D = &__pyx_type_4yoda_4core_HistoBin1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_HistoBin1D->tp_base = __pyx_ptype_4yoda_4core_Bin1D_Dbn1D;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_HistoBin1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_HistoBin1D->tp_dictoffset && __pyx_ptype_4yoda_4core_HistoBin1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_HistoBin1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_HistoBin1D, __pyx_vtabptr_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_HistoBin1D, (PyObject *) __pyx_ptype_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_HistoBin1D) < 0) __PYX_ERR(17, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_ProfileBin1D = &__pyx_vtable_4yoda_4core_ProfileBin1D;
  __pyx_vtable_4yoda_4core_ProfileBin1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin1D_Dbn2D;
  __pyx_vtable_4yoda_4core_ProfileBin1D.pb1ptr = (YODA::ProfileBin1D *(*)(struct __pyx_obj_4yoda_4core_ProfileBin1D *))__pyx_f_4yoda_4core_12ProfileBin1D_pb1ptr;
  __pyx_vtable_4yoda_4core_ProfileBin1D._ProfileBin1D = (YODA::ProfileBin1D *(*)(struct __pyx_obj_4yoda_4core_ProfileBin1D *))__pyx_f_4yoda_4core_12ProfileBin1D__ProfileBin1D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_ProfileBin1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_ProfileBin1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_ProfileBin1D)) __PYX_ERR(18, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_ProfileBin1D_spec, __pyx_ptype_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_ProfileBin1D = &__pyx_type_4yoda_4core_ProfileBin1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_ProfileBin1D->tp_base = __pyx_ptype_4yoda_4core_Bin1D_Dbn2D;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_ProfileBin1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dictoffset && __pyx_ptype_4yoda_4core_ProfileBin1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_ProfileBin1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_ProfileBin1D, __pyx_vtabptr_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ProfileBin1D, (PyObject *) __pyx_ptype_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_ProfileBin1D) < 0) __PYX_ERR(18, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_AnalysisObject = &__pyx_vtable_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_AnalysisObject.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_AnalysisObject.aoptr = (YODA::AnalysisObject *(*)(struct __pyx_obj_4yoda_4core_AnalysisObject *))__pyx_f_4yoda_4core_14AnalysisObject_aoptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_AnalysisObject = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_AnalysisObject_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_AnalysisObject)) __PYX_ERR(1, 3, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_AnalysisObject_spec, __pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_AnalysisObject = &__pyx_type_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_AnalysisObject->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_AnalysisObject->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_AnalysisObject->tp_dictoffset && __pyx_ptype_4yoda_4core_AnalysisObject->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_AnalysisObject->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_AnalysisObject, __pyx_vtabptr_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AnalysisObject, (PyObject *) __pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_AnalysisObject) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Counter = &__pyx_vtable_4yoda_4core_Counter;
  __pyx_vtable_4yoda_4core_Counter.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Counter.cptr = (YODA::Counter *(*)(struct __pyx_obj_4yoda_4core_Counter *))__pyx_f_4yoda_4core_7Counter_cptr;
  __pyx_vtable_4yoda_4core_Counter._Counter = (YODA::Counter *(*)(struct __pyx_obj_4yoda_4core_Counter *))__pyx_f_4yoda_4core_7Counter__Counter;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Counter = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Counter_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Counter)) __PYX_ERR(13, 1, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Counter_spec, __pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Counter = &__pyx_type_4yoda_4core_Counter;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Counter->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Counter->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Counter->tp_dictoffset && __pyx_ptype_4yoda_4core_Counter->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Counter->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Counter, __pyx_vtabptr_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Counter, (PyObject *) __pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Counter) < 0) __PYX_ERR(13, 1, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Histo1D = &__pyx_vtable_4yoda_4core_Histo1D;
  __pyx_vtable_4yoda_4core_Histo1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Histo1D.h1ptr = (YODA::Histo1D *(*)(struct __pyx_obj_4yoda_4core_Histo1D *))__pyx_f_4yoda_4core_7Histo1D_h1ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 8, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Histo1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Histo1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Histo1D)) __PYX_ERR(2, 8, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Histo1D_spec, __pyx_ptype_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Histo1D = &__pyx_type_4yoda_4core_Histo1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Histo1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Histo1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Histo1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Histo1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Histo1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Histo1D, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(2, 8, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_7Histo1D_8__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_7Histo1D_8__len__.doc = __pyx_doc_4yoda_4core_7Histo1D_8__len__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_7Histo1D_8__len__;
    }
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Histo1D, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(2, 8, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_7Histo1D_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_7Histo1D_10__getitem__.doc = __pyx_doc_4yoda_4core_7Histo1D_10__getitem__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_7Histo1D_10__getitem__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Histo1D, __pyx_vtabptr_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Histo1D, (PyObject *) __pyx_ptype_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Histo1D) < 0) __PYX_ERR(2, 8, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Profile1D = &__pyx_vtable_4yoda_4core_Profile1D;
  __pyx_vtable_4yoda_4core_Profile1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Profile1D.p1ptr = (YODA::Profile1D *(*)(struct __pyx_obj_4yoda_4core_Profile1D *))__pyx_f_4yoda_4core_9Profile1D_p1ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Profile1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Profile1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Profile1D)) __PYX_ERR(19, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Profile1D_spec, __pyx_ptype_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Profile1D = &__pyx_type_4yoda_4core_Profile1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Profile1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Profile1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Profile1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Profile1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Profile1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Profile1D, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(19, 2, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_9Profile1D_8__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_9Profile1D_8__len__.doc = __pyx_doc_4yoda_4core_9Profile1D_8__len__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_9Profile1D_8__len__;
    }
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Profile1D, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(19, 2, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_9Profile1D_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_9Profile1D_10__getitem__.doc = __pyx_doc_4yoda_4core_9Profile1D_10__getitem__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_9Profile1D_10__getitem__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Profile1D, __pyx_vtabptr_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Profile1D, (PyObject *) __pyx_ptype_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Profile1D) < 0) __PYX_ERR(19, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Bin2D_Dbn2D = &__pyx_vtable_4yoda_4core_Bin2D_Dbn2D;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn2D.b2ptr = (__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *))__pyx_f_4yoda_4core_11Bin2D_Dbn2D_b2ptr;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn2D._Bin2D = (__pyx_t_4yoda_12declarations_Bin2D_Dbn2D *(*)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn2D *))__pyx_f_4yoda_4core_11Bin2D_Dbn2D__Bin2D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Bin2D_Dbn2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Bin2D_Dbn2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Bin2D_Dbn2D)) __PYX_ERR(20, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Bin2D_Dbn2D_spec, __pyx_ptype_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Bin2D_Dbn2D = &__pyx_type_4yoda_4core_Bin2D_Dbn2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_base = __pyx_ptype_4yoda_4core_Bin;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D, __pyx_vtabptr_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Bin2D_Dbn2D, (PyObject *) __pyx_ptype_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Bin2D_Dbn2D) < 0) __PYX_ERR(20, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Bin2D_Dbn3D = &__pyx_vtable_4yoda_4core_Bin2D_Dbn3D;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn3D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn3D.b2ptr = (__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *(*)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *))__pyx_f_4yoda_4core_11Bin2D_Dbn3D_b2ptr;
  __pyx_vtable_4yoda_4core_Bin2D_Dbn3D._Bin2D = (__pyx_t_4yoda_12declarations_Bin2D_Dbn3D *(*)(struct __pyx_obj_4yoda_4core_Bin2D_Dbn3D *))__pyx_f_4yoda_4core_11Bin2D_Dbn3D__Bin2D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 10, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Bin2D_Dbn3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Bin2D_Dbn3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Bin2D_Dbn3D)) __PYX_ERR(21, 10, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Bin2D_Dbn3D_spec, __pyx_ptype_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Bin2D_Dbn3D = &__pyx_type_4yoda_4core_Bin2D_Dbn3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_base = __pyx_ptype_4yoda_4core_Bin;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dictoffset && __pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D, __pyx_vtabptr_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Bin2D_Dbn3D, (PyObject *) __pyx_ptype_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Bin2D_Dbn3D) < 0) __PYX_ERR(21, 10, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_ProfileBin2D = &__pyx_vtable_4yoda_4core_ProfileBin2D;
  __pyx_vtable_4yoda_4core_ProfileBin2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin2D_Dbn3D;
  __pyx_vtable_4yoda_4core_ProfileBin2D.pb2ptr = (YODA::ProfileBin2D *(*)(struct __pyx_obj_4yoda_4core_ProfileBin2D *))__pyx_f_4yoda_4core_12ProfileBin2D_pb2ptr;
  __pyx_vtable_4yoda_4core_ProfileBin2D._ProfileBin2D = (YODA::ProfileBin2D *(*)(struct __pyx_obj_4yoda_4core_ProfileBin2D *))__pyx_f_4yoda_4core_12ProfileBin2D__ProfileBin2D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_ProfileBin2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_ProfileBin2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_ProfileBin2D)) __PYX_ERR(22, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_ProfileBin2D_spec, __pyx_ptype_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_ProfileBin2D = &__pyx_type_4yoda_4core_ProfileBin2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_ProfileBin2D->tp_base = __pyx_ptype_4yoda_4core_Bin2D_Dbn3D;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_ProfileBin2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dictoffset && __pyx_ptype_4yoda_4core_ProfileBin2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_ProfileBin2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_ProfileBin2D, __pyx_vtabptr_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ProfileBin2D, (PyObject *) __pyx_ptype_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_ProfileBin2D) < 0) __PYX_ERR(22, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_HistoBin2D = &__pyx_vtable_4yoda_4core_HistoBin2D;
  __pyx_vtable_4yoda_4core_HistoBin2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Bin2D_Dbn2D;
  __pyx_vtable_4yoda_4core_HistoBin2D.hb2ptr = (YODA::HistoBin2D *(*)(struct __pyx_obj_4yoda_4core_HistoBin2D *))__pyx_f_4yoda_4core_10HistoBin2D_hb2ptr;
  __pyx_vtable_4yoda_4core_HistoBin2D._HistoBin2D = (YODA::HistoBin2D *(*)(struct __pyx_obj_4yoda_4core_HistoBin2D *))__pyx_f_4yoda_4core_10HistoBin2D__HistoBin2D;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_HistoBin2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_HistoBin2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_HistoBin2D)) __PYX_ERR(23, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_HistoBin2D_spec, __pyx_ptype_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_HistoBin2D = &__pyx_type_4yoda_4core_HistoBin2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_HistoBin2D->tp_base = __pyx_ptype_4yoda_4core_Bin2D_Dbn2D;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_HistoBin2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_HistoBin2D->tp_dictoffset && __pyx_ptype_4yoda_4core_HistoBin2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_HistoBin2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_HistoBin2D, __pyx_vtabptr_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_HistoBin2D, (PyObject *) __pyx_ptype_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_HistoBin2D) < 0) __PYX_ERR(23, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Histo2D = &__pyx_vtable_4yoda_4core_Histo2D;
  __pyx_vtable_4yoda_4core_Histo2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Histo2D.h2ptr = (YODA::Histo2D *(*)(struct __pyx_obj_4yoda_4core_Histo2D *))__pyx_f_4yoda_4core_7Histo2D_h2ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Histo2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Histo2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Histo2D)) __PYX_ERR(3, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Histo2D_spec, __pyx_ptype_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Histo2D = &__pyx_type_4yoda_4core_Histo2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Histo2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Histo2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Histo2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Histo2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Histo2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Histo2D, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(3, 2, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_7Histo2D_8__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_7Histo2D_8__len__.doc = __pyx_doc_4yoda_4core_7Histo2D_8__len__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_7Histo2D_8__len__;
    }
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Histo2D, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(3, 2, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_7Histo2D_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_7Histo2D_10__getitem__.doc = __pyx_doc_4yoda_4core_7Histo2D_10__getitem__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_7Histo2D_10__getitem__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Histo2D, __pyx_vtabptr_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Histo2D, (PyObject *) __pyx_ptype_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Histo2D) < 0) __PYX_ERR(3, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Profile2D = &__pyx_vtable_4yoda_4core_Profile2D;
  __pyx_vtable_4yoda_4core_Profile2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Profile2D.p2ptr = (YODA::Profile2D *(*)(struct __pyx_obj_4yoda_4core_Profile2D *))__pyx_f_4yoda_4core_9Profile2D_p2ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Profile2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Profile2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Profile2D)) __PYX_ERR(24, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Profile2D_spec, __pyx_ptype_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Profile2D = &__pyx_type_4yoda_4core_Profile2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Profile2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Profile2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Profile2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Profile2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Profile2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_UPDATE_DESCRIPTOR_DOC
  {
    PyObject *wrapper = PyObject_GetAttrString((PyObject *)__pyx_ptype_4yoda_4core_Profile2D, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(24, 2, __pyx_L1_error)
    if (__Pyx_IS_TYPE(wrapper, &PyWrapperDescr_Type)) {
      __pyx_wrapperbase_4yoda_4core_9Profile2D_10__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
      __pyx_wrapperbase_4yoda_4core_9Profile2D_10__getitem__.doc = __pyx_doc_4yoda_4core_9Profile2D_10__getitem__;
      ((PyWrapperDescrObject *)wrapper)->d_base = &__pyx_wrapperbase_4yoda_4core_9Profile2D_10__getitem__;
    }
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Profile2D, __pyx_vtabptr_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Profile2D, (PyObject *) __pyx_ptype_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Profile2D) < 0) __PYX_ERR(24, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Point = &__pyx_vtable_4yoda_4core_Point;
  __pyx_vtable_4yoda_4core_Point.__pyx_base = *__pyx_vtabptr_4yoda_4util_Base;
  __pyx_vtable_4yoda_4core_Point.pptr = (YODA::Point *(*)(struct __pyx_obj_4yoda_4core_Point *))__pyx_f_4yoda_4core_5Point_pptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4util_Base); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Point = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Point_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Point)) __PYX_ERR(25, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Point_spec, __pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Point = &__pyx_type_4yoda_4core_Point;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Point->tp_base = __pyx_ptype_4yoda_4util_Base;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Point->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Point->tp_dictoffset && __pyx_ptype_4yoda_4core_Point->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Point->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Point, __pyx_vtabptr_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point, (PyObject *) __pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point) < 0) __PYX_ERR(25, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Point1D = &__pyx_vtable_4yoda_4core_Point1D;
  __pyx_vtable_4yoda_4core_Point1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Point;
  __pyx_vtable_4yoda_4core_Point1D.p1ptr = (YODA::Point1D *(*)(struct __pyx_obj_4yoda_4core_Point1D *))__pyx_f_4yoda_4core_7Point1D_p1ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Point); if (unlikely(!__pyx_t_2)) __PYX_ERR(26, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Point1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Point1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Point1D)) __PYX_ERR(26, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Point1D_spec, __pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Point1D = &__pyx_type_4yoda_4core_Point1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Point1D->tp_base = __pyx_ptype_4yoda_4core_Point;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Point1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Point1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Point1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Point1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Point1D, __pyx_vtabptr_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point1D, (PyObject *) __pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point1D) < 0) __PYX_ERR(26, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Point2D = &__pyx_vtable_4yoda_4core_Point2D;
  __pyx_vtable_4yoda_4core_Point2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Point;
  __pyx_vtable_4yoda_4core_Point2D.p2ptr = (YODA::Point2D *(*)(struct __pyx_obj_4yoda_4core_Point2D *))__pyx_f_4yoda_4core_7Point2D_p2ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Point); if (unlikely(!__pyx_t_2)) __PYX_ERR(27, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Point2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Point2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Point2D)) __PYX_ERR(27, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Point2D_spec, __pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Point2D = &__pyx_type_4yoda_4core_Point2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Point2D->tp_base = __pyx_ptype_4yoda_4core_Point;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Point2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Point2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Point2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Point2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Point2D, __pyx_vtabptr_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point2D, (PyObject *) __pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point2D) < 0) __PYX_ERR(27, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Point3D = &__pyx_vtable_4yoda_4core_Point3D;
  __pyx_vtable_4yoda_4core_Point3D.__pyx_base = *__pyx_vtabptr_4yoda_4core_Point;
  __pyx_vtable_4yoda_4core_Point3D.p3ptr = (YODA::Point3D *(*)(struct __pyx_obj_4yoda_4core_Point3D *))__pyx_f_4yoda_4core_7Point3D_p3ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_Point); if (unlikely(!__pyx_t_2)) __PYX_ERR(28, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Point3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Point3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Point3D)) __PYX_ERR(28, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Point3D_spec, __pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Point3D = &__pyx_type_4yoda_4core_Point3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Point3D->tp_base = __pyx_ptype_4yoda_4core_Point;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Point3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Point3D->tp_dictoffset && __pyx_ptype_4yoda_4core_Point3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Point3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Point3D, __pyx_vtabptr_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Point3D, (PyObject *) __pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Point3D) < 0) __PYX_ERR(28, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Scatter1D = &__pyx_vtable_4yoda_4core_Scatter1D;
  __pyx_vtable_4yoda_4core_Scatter1D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Scatter1D.s1ptr = (YODA::Scatter1D *(*)(struct __pyx_obj_4yoda_4core_Scatter1D *))__pyx_f_4yoda_4core_9Scatter1D_s1ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Scatter1D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Scatter1D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Scatter1D)) __PYX_ERR(4, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Scatter1D_spec, __pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Scatter1D = &__pyx_type_4yoda_4core_Scatter1D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Scatter1D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Scatter1D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Scatter1D->tp_dictoffset && __pyx_ptype_4yoda_4core_Scatter1D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Scatter1D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Scatter1D, __pyx_vtabptr_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter1D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter1D) < 0) __PYX_ERR(4, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Scatter2D = &__pyx_vtable_4yoda_4core_Scatter2D;
  __pyx_vtable_4yoda_4core_Scatter2D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Scatter2D.s2ptr = (YODA::Scatter2D *(*)(struct __pyx_obj_4yoda_4core_Scatter2D *))__pyx_f_4yoda_4core_9Scatter2D_s2ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(29, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Scatter2D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Scatter2D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Scatter2D)) __PYX_ERR(29, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Scatter2D_spec, __pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Scatter2D = &__pyx_type_4yoda_4core_Scatter2D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Scatter2D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Scatter2D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Scatter2D->tp_dictoffset && __pyx_ptype_4yoda_4core_Scatter2D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Scatter2D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Scatter2D, __pyx_vtabptr_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter2D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter2D) < 0) __PYX_ERR(29, 2, __pyx_L1_error)
  #endif
  __pyx_vtabptr_4yoda_4core_Scatter3D = &__pyx_vtable_4yoda_4core_Scatter3D;
  __pyx_vtable_4yoda_4core_Scatter3D.__pyx_base = *__pyx_vtabptr_4yoda_4core_AnalysisObject;
  __pyx_vtable_4yoda_4core_Scatter3D.s3ptr = (YODA::Scatter3D *(*)(struct __pyx_obj_4yoda_4core_Scatter3D *))__pyx_f_4yoda_4core_9Scatter3D_s3ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_t_2 = PyTuple_Pack(1, (PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject); if (unlikely(!__pyx_t_2)) __PYX_ERR(30, 2, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_ptype_4yoda_4core_Scatter3D = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core_Scatter3D_spec, __pyx_t_2);
  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (unlikely(!__pyx_ptype_4yoda_4core_Scatter3D)) __PYX_ERR(30, 2, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core_Scatter3D_spec, __pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core_Scatter3D = &__pyx_type_4yoda_4core_Scatter3D;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  __pyx_ptype_4yoda_4core_Scatter3D->tp_base = __pyx_ptype_4yoda_4core_AnalysisObject;
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core_Scatter3D->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core_Scatter3D->tp_dictoffset && __pyx_ptype_4yoda_4core_Scatter3D->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core_Scatter3D->tp_getattro = __Pyx_PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_ptype_4yoda_4core_Scatter3D, __pyx_vtabptr_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_MergeVtables(__pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Scatter3D, (PyObject *) __pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if (__Pyx_setup_reduce((PyObject *) __pyx_ptype_4yoda_4core_Scatter3D) < 0) __PYX_ERR(30, 2, __pyx_L1_error)
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict)) __PYX_ERR(1, 42, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict) < 0) __PYX_ERR(1, 42, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict = &__pyx_type_4yoda_4core___pyx_scope_struct__annotationsDict;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict) < 0) __PYX_ERR(1, 42, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct__annotationsDict->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr)) __PYX_ERR(1, 46, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(1, 46, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_1_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr) < 0) __PYX_ERR(1, 46, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_1_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr)) __PYX_ERR(2, 55, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr) < 0) __PYX_ERR(2, 55, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_2_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr) < 0) __PYX_ERR(2, 55, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_2_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr)) __PYX_ERR(19, 51, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr) < 0) __PYX_ERR(19, 51, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_3_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr) < 0) __PYX_ERR(19, 51, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_3_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr)) __PYX_ERR(25, 195, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_4_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr) < 0) __PYX_ERR(25, 195, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_4_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check)) __PYX_ERR(6, 17, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check) < 0) __PYX_ERR(6, 17, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check = &__pyx_type_4yoda_4core___pyx_scope_struct_5__pattern_check;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check) < 0) __PYX_ERR(6, 17, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_5__pattern_check->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr)) __PYX_ERR(6, 23, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(6, 23, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_6_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(6, 23, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_6_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr_spec, NULL); if (unlikely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr)) __PYX_ERR(6, 29, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr_spec, __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr) < 0) __PYX_ERR(6, 29, __pyx_L1_error)
  #else
  __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr = &__pyx_type_4yoda_4core___pyx_scope_struct_7_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr) < 0) __PYX_ERR(6, 29, __pyx_L1_error)
  #endif
  #if PY_MAJOR_VERSION < 3
  __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr->tp_print = 0;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr->tp_dictoffset && __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_ptype_4yoda_4core___pyx_scope_struct_7_genexpr->tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
  }
  #endif
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(void) {
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(31, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_0_0(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type", 
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_0(PyTypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_0(PyTypeObject),
  #else
  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_0_0(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_0_0); if (!__pyx_ptype_7cpython_4type_type) __PYX_ERR(31, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_variable_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}


#if PY_MAJOR_VERSION >= 3
#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_core(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_core},
  {0, NULL}
};
#endif

#ifdef __cplusplus
namespace {
  struct PyModuleDef __pyx_moduledef =
  #else
  static struct PyModuleDef __pyx_moduledef =
  #endif
  {
      PyModuleDef_HEAD_INIT,
      "core",
      0, /* m_doc */
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      0, /* m_size */
    #elif CYTHON_USE_MODULE_STATE
      sizeof(__pyx_mstate), /* m_size */
    #else
      -1, /* m_size */
    #endif
      __pyx_methods /* m_methods */,
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      __pyx_moduledef_slots, /* m_slots */
    #else
      NULL, /* m_reload */
    #endif
    #if CYTHON_USE_MODULE_STATE
      __pyx_m_traverse, /* m_traverse */
      __pyx_m_clear, /* m_clear */
      NULL /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      NULL /* m_free */
    #endif
  };
  #ifdef __cplusplus
} /* anonymous namespace */
#endif
#endif

#ifndef CYTHON_NO_PYINIT_EXPORT
#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#elif PY_MAJOR_VERSION < 3
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" void
#else
#define __Pyx_PyMODINIT_FUNC void
#endif
#else
#ifdef __cplusplus
#define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
#else
#define __Pyx_PyMODINIT_FUNC PyObject *
#endif
#endif


#if PY_MAJOR_VERSION < 3
__Pyx_PyMODINIT_FUNC initcore(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC initcore(void)
#else
__Pyx_PyMODINIT_FUNC PyInit_core(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_core(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    #if PY_VERSION_HEX >= 0x030700A1
    static PY_INT64_T main_interpreter_id = -1;
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return (unlikely(current_id == -1)) ? -1 : 0;
    } else if (unlikely(main_interpreter_id != current_id))
    #else
    static PyInterpreterState *main_interpreter = NULL;
    PyInterpreterState *current_interpreter = PyThreadState_Get()->interp;
    if (!main_interpreter) {
        main_interpreter = current_interpreter;
    } else if (unlikely(main_interpreter != current_interpreter))
    #endif
    {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *module, const char* from_name, const char* to_name, int allow_none)
#else
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
#endif
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
#if CYTHON_COMPILING_IN_LIMITED_API
            result = PyModule_AddObject(module, to_name, value);
#else
            result = PyDict_SetItemString(moddict, to_name, value);
#endif
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    CYTHON_UNUSED_VAR(def);
    if (__Pyx_check_single_interpreter())
        return NULL;
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    moddict = module;
#else
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
#endif
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_core(PyObject *__pyx_pyinit_module)
#endif
#endif
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'core' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #elif PY_MAJOR_VERSION >= 3
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_m = __pyx_pyinit_module;
  Py_INCREF(__pyx_m);
  #else
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4("core", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  if (unlikely(!__pyx_m)) __PYX_ERR(8, 1, __pyx_L1_error)
  #elif CYTHON_USE_MODULE_STATE
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(8, 1, __pyx_L1_error)
  {
    int add_module_result = PyState_AddModule(__pyx_t_1, &__pyx_moduledef);
    __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to core pseudovariable */
    if (unlikely((add_module_result < 0))) __PYX_ERR(8, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  if (unlikely(!__pyx_m)) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #endif
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(8, 1, __pyx_L1_error)
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(8, 1, __pyx_L1_error)
  Py_INCREF(__pyx_b);
  __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(8, 1, __pyx_L1_error)
  Py_INCREF(__pyx_cython_runtime);
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #if CYTHON_REFNANNY
__Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
if (!__Pyx_RefNanny) {
  PyErr_Clear();
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
  if (!__Pyx_RefNanny)
      Py_FatalError("failed to import 'refnanny' module");
}
#endif
  __Pyx_RefNannySetupContext("__Pyx_PyMODINIT_FUNC PyInit_core(void)", 0);
  if (__Pyx_check_binary_version() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(8, 1, __pyx_L1_error)
  __pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(8, 1, __pyx_L1_error)
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_StopAsyncIteration_USED
  if (__pyx_StopAsyncIteration_init(__pyx_m) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 && defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  PyEval_InitThreads();
  #endif
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif
  if (__pyx_module_is_main_yoda__core) {
    if (PyObject_SetAttr(__pyx_m, __pyx_n_s_name, __pyx_n_s_main) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(8, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "yoda.core")) {
      if (unlikely((PyDict_SetItemString(modules, "yoda.core", __pyx_m) < 0))) __PYX_ERR(8, 1, __pyx_L1_error)
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code();
  (void)__Pyx_modinit_variable_export_code();
  (void)__Pyx_modinit_function_export_code();
  if (unlikely((__Pyx_modinit_type_init_code() < 0))) __PYX_ERR(8, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_import_code() < 0))) __PYX_ERR(8, 1, __pyx_L1_error)
  (void)__Pyx_modinit_variable_import_code();
  (void)__Pyx_modinit_function_import_code();
  /*--- Execution code ---*/
  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
  if (__Pyx_patch_abc() < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  #endif

  /* "yoda/core.pyx":14
 * cimport yoda.declarations as c
 * cimport yoda.util as cutil
 * import yoda.util as util             # <<<<<<<<<<<<<<
 * 
 * ## Pure Python imports
 */
  __pyx_t_2 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_yoda_util, __pyx_tuple__13); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_util, __pyx_t_2) < 0) __PYX_ERR(8, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":17
 * 
 * ## Pure Python imports
 * from itertools import repeat             # <<<<<<<<<<<<<<
 * from operator import attrgetter
 * 
 */
  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_n_s_repeat);
  __Pyx_GIVEREF(__pyx_n_s_repeat);
  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_repeat);
  __pyx_t_3 = __Pyx_Import(__pyx_n_s_itertools, __pyx_t_2, -1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_3, __pyx_n_s_repeat); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_repeat, __pyx_t_2) < 0) __PYX_ERR(8, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "yoda/core.pyx":18
 * ## Pure Python imports
 * from itertools import repeat
 * from operator import attrgetter             # <<<<<<<<<<<<<<
 * 
 * def version():
 */
  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_n_s_attrgetter);
  __Pyx_GIVEREF(__pyx_n_s_attrgetter);
  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_attrgetter);
  __pyx_t_2 = __Pyx_Import(__pyx_n_s_operator, __pyx_t_3, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_attrgetter); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_attrgetter, __pyx_t_3) < 0) __PYX_ERR(8, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":20
 * from operator import attrgetter
 * 
 * def version():             # <<<<<<<<<<<<<<
 *     "Return YODA library version as a string"
 *     return c.version()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_1version, 0, __pyx_n_s_version, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__14)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_version, __pyx_t_2) < 0) __PYX_ERR(8, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":24
 *     return c.version()
 * 
 * def getLibPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA library"
 *     return c.getLibPath()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3getLibPath, 0, __pyx_n_s_getLibPath, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__15)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getLibPath, __pyx_t_2) < 0) __PYX_ERR(8, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":28
 *     return c.getLibPath()
 * 
 * def getDataPath():             # <<<<<<<<<<<<<<
 *     "Return the directory containing the YODA data files"
 *     return c.getDataPath()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5getDataPath, 0, __pyx_n_s_getDataPath, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getDataPath, __pyx_t_2) < 0) __PYX_ERR(8, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "yoda/core.pyx":32
 *     return c.getDataPath()
 * 
 * def getYodaDataPath():             # <<<<<<<<<<<<<<
 *     "Return the list of directories containing YODA data files"
 *     return c.getYodaDataPath()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7getYodaDataPath, 0, __pyx_n_s_getYodaDataPath, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__17)); if (unlikely(!__pyx_t_2)) __PYX_ERR(8, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getYodaDataPath, __pyx_t_2) < 0) __PYX_ERR(8, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Errors.pyx":11
 * cdef public:
 *     # Master exception
 *     object YodaExc_Exception = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.Exception", <object> NULL, <object> NULL)
 * 
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.Exception"), ((PyObject *)NULL), ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 11, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_XGOTREF(YodaExc_Exception);
  __Pyx_DECREF_SET(YodaExc_Exception, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Errors.pyx":16
 *     # Inherited exceptions
 *     object YodaExc_BinningError = PyErr_NewException(
 *         "yoda.BinningError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_RangeError = PyErr_NewException(
 *         "yoda.RangeError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_2 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_2);

  /* "include/Errors.pyx":15
 * 
 *     # Inherited exceptions
 *     object YodaExc_BinningError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.BinningError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_RangeError = PyErr_NewException(
 */
  __pyx_t_3 = PyErr_NewException(((char *)"yoda.BinningError"), __pyx_t_2, ((PyObject *)NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 15, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(YodaExc_BinningError);
  __Pyx_DECREF_SET(YodaExc_BinningError, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Errors.pyx":18
 *         "yoda.BinningError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_RangeError = PyErr_NewException(
 *         "yoda.RangeError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_LockError = PyErr_NewException(
 *         "yoda.LockError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_3 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_3);

  /* "include/Errors.pyx":17
 *     object YodaExc_BinningError = PyErr_NewException(
 *         "yoda.BinningError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_RangeError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.RangeError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LockError = PyErr_NewException(
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.RangeError"), __pyx_t_3, ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(YodaExc_RangeError);
  __Pyx_DECREF_SET(YodaExc_RangeError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Errors.pyx":20
 *         "yoda.RangeError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LockError = PyErr_NewException(
 *         "yoda.LockError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_GridError = PyErr_NewException(
 *         "yoda.GridError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_2 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_2);

  /* "include/Errors.pyx":19
 *     object YodaExc_RangeError = PyErr_NewException(
 *         "yoda.RangeError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LockError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.LockError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_GridError = PyErr_NewException(
 */
  __pyx_t_3 = PyErr_NewException(((char *)"yoda.LockError"), __pyx_t_2, ((PyObject *)NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(YodaExc_LockError);
  __Pyx_DECREF_SET(YodaExc_LockError, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Errors.pyx":22
 *         "yoda.LockError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_GridError = PyErr_NewException(
 *         "yoda.GridError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_LogicError = PyErr_NewException(
 *         "yoda.LogicError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_3 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_3);

  /* "include/Errors.pyx":21
 *     object YodaExc_LockError = PyErr_NewException(
 *         "yoda.LockError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_GridError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.GridError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LogicError = PyErr_NewException(
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.GridError"), __pyx_t_3, ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(YodaExc_GridError);
  __Pyx_DECREF_SET(YodaExc_GridError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Errors.pyx":24
 *         "yoda.GridError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LogicError = PyErr_NewException(
 *         "yoda.LogicError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_LowStatsError = PyErr_NewException(
 *         "yoda.LowStatsError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_2 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_2);

  /* "include/Errors.pyx":23
 *     object YodaExc_GridError = PyErr_NewException(
 *         "yoda.GridError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LogicError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.LogicError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LowStatsError = PyErr_NewException(
 */
  __pyx_t_3 = PyErr_NewException(((char *)"yoda.LogicError"), __pyx_t_2, ((PyObject *)NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 23, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(YodaExc_LogicError);
  __Pyx_DECREF_SET(YodaExc_LogicError, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Errors.pyx":26
 *         "yoda.LogicError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LowStatsError = PyErr_NewException(
 *         "yoda.LowStatsError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_WeightError = PyErr_NewException(
 *         "yoda.WeightError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_3 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_3);

  /* "include/Errors.pyx":25
 *     object YodaExc_LogicError = PyErr_NewException(
 *         "yoda.LogicError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_LowStatsError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.LowStatsError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_WeightError = PyErr_NewException(
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.LowStatsError"), __pyx_t_3, ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(YodaExc_LowStatsError);
  __Pyx_DECREF_SET(YodaExc_LowStatsError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Errors.pyx":28
 *         "yoda.LowStatsError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_WeightError = PyErr_NewException(
 *         "yoda.WeightError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_AnnotationError = PyErr_NewException(
 *         "yoda.AnnotationError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_2 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_2);

  /* "include/Errors.pyx":27
 *     object YodaExc_LowStatsError = PyErr_NewException(
 *         "yoda.LowStatsError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_WeightError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.WeightError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_AnnotationError = PyErr_NewException(
 */
  __pyx_t_3 = PyErr_NewException(((char *)"yoda.WeightError"), __pyx_t_2, ((PyObject *)NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(YodaExc_WeightError);
  __Pyx_DECREF_SET(YodaExc_WeightError, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Errors.pyx":30
 *         "yoda.WeightError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_AnnotationError = PyErr_NewException(
 *         "yoda.AnnotationError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_ReadError = PyErr_NewException(
 *         "yoda.ReadError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_3 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_3);

  /* "include/Errors.pyx":29
 *     object YodaExc_WeightError = PyErr_NewException(
 *         "yoda.WeightError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_AnnotationError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.AnnotationError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_ReadError = PyErr_NewException(
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.AnnotationError"), __pyx_t_3, ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(YodaExc_AnnotationError);
  __Pyx_DECREF_SET(YodaExc_AnnotationError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Errors.pyx":32
 *         "yoda.AnnotationError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_ReadError = PyErr_NewException(
 *         "yoda.ReadError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 *     object YodaExc_UserError = PyErr_NewException(
 *         "yoda.UserError", YodaExc_Exception, <object> NULL)
 */
  __pyx_t_2 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_2);

  /* "include/Errors.pyx":31
 *     object YodaExc_AnnotationError = PyErr_NewException(
 *         "yoda.AnnotationError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_ReadError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.ReadError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_UserError = PyErr_NewException(
 */
  __pyx_t_3 = PyErr_NewException(((char *)"yoda.ReadError"), __pyx_t_2, ((PyObject *)NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(32, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(YodaExc_ReadError);
  __Pyx_DECREF_SET(YodaExc_ReadError, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "include/Errors.pyx":34
 *         "yoda.ReadError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_UserError = PyErr_NewException(
 *         "yoda.UserError", YodaExc_Exception, <object> NULL)             # <<<<<<<<<<<<<<
 * 
 * # Note that these don't appear in python space due to the cdef. What we will
 */
  __pyx_t_3 = YodaExc_Exception;
  __Pyx_INCREF(__pyx_t_3);

  /* "include/Errors.pyx":33
 *     object YodaExc_ReadError = PyErr_NewException(
 *         "yoda.ReadError", YodaExc_Exception, <object> NULL)
 *     object YodaExc_UserError = PyErr_NewException(             # <<<<<<<<<<<<<<
 *         "yoda.UserError", YodaExc_Exception, <object> NULL)
 * 
 */
  __pyx_t_2 = PyErr_NewException(((char *)"yoda.UserError"), __pyx_t_3, ((PyObject *)NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(32, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(YodaExc_UserError);
  __Pyx_DECREF_SET(YodaExc_UserError, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;

  /* "include/Dbn0D.pyx":26
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__19)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(9, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":29
 *         return cutil.set_owned_ptr(self, new c.Dbn0D(deref(self.d0ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_9reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(9, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":38
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float weight=1.0) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_11fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(9, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":46
 *         self.d0ptr().fill(weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_13scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__25)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 46, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(9, 46, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":56
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d0ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_15numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(9, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":61
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d0ptr().effNumEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_17effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__27)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(9, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":67
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d0ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_19errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__28)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(9, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":72
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d0ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_21relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__29)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(9, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":78
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d0ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_23sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__30)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(9, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "include/Dbn0D.pyx":83
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d0ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_25sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__31)); if (unlikely(!__pyx_t_2)) __PYX_ERR(9, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn0D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(9, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn0D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_31__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__32)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn0D_33__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn0D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__34)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Dbn1D.pyx":28
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__35)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(10, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":31
 *         return cutil.set_owned_ptr(self, new c.Dbn1D(deref(self.d1ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_9reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__36)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(10, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":40
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float x, float weight=1.0) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_11fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__38)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(10, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":48
 *         self.d1ptr().fill(x, weight, fraction)
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_13scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__39)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(10, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":56
 *         self.d1ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_15scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__41)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(10, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":66
 * 
 *     #@property
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return self.d1ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_17xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__42)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(10, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":71
 * 
 *     #@property
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return self.d1ptr().xVariance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_19xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__43)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(10, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":76
 * 
 *     #@property
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return self.d1ptr().xStdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_21xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__44)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(10, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":81
 * 
 *     #@property
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return self.d1ptr().xStdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_23xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__45)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(10, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":86
 * 
 *     #@property
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return self.d1ptr().xRMS()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_25xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__46)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(10, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":91
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d1ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_27numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__47)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(10, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":96
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d1ptr().effNumEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_29effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(10, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":102
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d1ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_31errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__49)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(10, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":107
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d1ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_33relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__50)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(10, 107, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":113
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d1ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_35sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__51)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(10, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":118
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d1ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_37sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__52)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(10, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":123
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d1ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_39sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__53)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(10, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "include/Dbn1D.pyx":128
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d1ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_41sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__54)); if (unlikely(!__pyx_t_2)) __PYX_ERR(10, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn1D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(10, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_47__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__55)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn1D_49__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Dbn2D.pyx":32
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__57)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(11, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":35
 *         return cutil.new_owned_cls(Dbn2D, new c.Dbn2D(deref(self.d2ptr())))
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_9reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__58)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(11, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":43
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, weight=1.0) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_11fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__60)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(11, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":53
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_13scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__61)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(11, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":61
 *         self.d2ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_15scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__62)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(11, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":69
 *         self.d2ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_17scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__64)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(11, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":77
 *         self.d2ptr().scaleY(y)
 * 
 *     def scaleXY(self, x, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_19scaleXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_scaleXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__66)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_scaleXY, __pyx_t_2) < 0) __PYX_ERR(11, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":89
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XY(self.d2ptr().xMean(), self.d2ptr().yMean())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_21mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__67)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(11, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":94
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XY(self.d2ptr().xVariance(), self.d2ptr().yVariance())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_23variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__68)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(11, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":99
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XY(self.d2ptr().xStdDev(), self.d2ptr().yStdDev())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_25stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(11, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":104
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XY(self.d2ptr().xStdErr(), self.d2ptr().yStdErr())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_27stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__70)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(11, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":109
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XY(self.d2ptr().xRMS(), self.d2ptr().yRMS())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_29rms, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_rms, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_rms, __pyx_t_2) < 0) __PYX_ERR(11, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":115
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d2ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_31numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__72)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(11, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":120
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d2ptr().effNumEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_33effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__73)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(11, 120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":126
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d2ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_35errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(11, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":131
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d2ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_37relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__75)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(11, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":137
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d2ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_39sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(11, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":142
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d2ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_41sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__77)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(11, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":147
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d2ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_43sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(11, 147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":152
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d2ptr().sumWY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_45sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__79)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(11, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":157
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d2ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_47sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(11, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":162
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d2ptr().sumWY2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_49sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__81)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(11, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "include/Dbn2D.pyx":167
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights xs * ys)"""
 *         return self.d2ptr().sumWXY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_51sumWXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D_sumWXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_2)) __PYX_ERR(11, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn2D->tp_dict, __pyx_n_s_sumWXY, __pyx_t_2) < 0) __PYX_ERR(11, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_57__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__83)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn2D_59__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Dbn3D.pyx":31
 * 
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Dbn3D, new c.Dbn3D(deref(self.d3ptr())))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_7copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__85)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_copy, __pyx_t_2) < 0) __PYX_ERR(12, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":35
 * 
 * 
 *     def fill(self, x, y, z, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (x, y, z, weight=1.0) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_9fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__87)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(12, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":44
 *         self.d3ptr().fill(x, y, z, weight, fraction)
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """
 *         () -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_11reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(12, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":52
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_13scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__89)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 52, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(12, 52, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":60
 *         self.d3ptr().scaleW(w)
 * 
 *     def scaleX(self, x):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_15scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_scaleX, __pyx_t_2) < 0) __PYX_ERR(12, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":68
 *         self.d3ptr().scaleX(x)
 * 
 *     def scaleY(self, y):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_17scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__91)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(12, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":76
 *         self.d3ptr().scaleY(y)
 * 
 *     def scaleZ(self, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_19scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 76, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_scaleZ, __pyx_t_2) < 0) __PYX_ERR(12, 76, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":84
 *         self.d3ptr().scaleZ(z)
 * 
 *     def scaleXYZ(self, x, y, z):             # <<<<<<<<<<<<<<
 *         """
 *         (float, float, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_21scaleXYZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_scaleXYZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__95)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_scaleXYZ, __pyx_t_2) < 0) __PYX_ERR(12, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":96
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """Weighted mean of x"""
 *         return util.XYZ(self.d3ptr().xMean(),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_23mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__96)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 96, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(12, 96, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":103
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """Weighted variance of x"""
 *         return util.XYZ(self.d3ptr().xVariance(),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_25variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__97)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(12, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":110
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard deviation of x"""
 *         return util.XYZ(self.d3ptr().xStdDev(),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_27stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__98)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(12, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":117
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """Weighted standard error on <x>"""
 *         return util.XYZ(self.d3ptr().xStdErr(),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_29stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(12, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":124
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """Weighted root mean squared (RMS) of x"""
 *         return util.XYZ(self.d3ptr().xRMS(),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_31rms, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_rms, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__100)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 124, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_rms, __pyx_t_2) < 0) __PYX_ERR(12, 124, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":132
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """The number of entries"""
 *         return self.d3ptr().numEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_33numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__101)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(12, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":137
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """Effective number of entries (for weighted events)"""
 *         return self.d3ptr().effNumEntries()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_35effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__102)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(12, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":143
 * 
 *     #@property
 *     def errW(self):             # <<<<<<<<<<<<<<
 *         """Error on sumW"""
 *         return self.d3ptr().errW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_37errW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_errW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__103)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_errW, __pyx_t_2) < 0) __PYX_ERR(12, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":148
 * 
 *     #@property
 *     def relErrW(self):             # <<<<<<<<<<<<<<
 *         """Relative error on sumW"""
 *         return self.d3ptr().relErrW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_39relErrW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_relErrW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__104)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_relErrW, __pyx_t_2) < 0) __PYX_ERR(12, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":154
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """sum(weights)"""
 *         return self.d3ptr().sumW()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_41sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(12, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":159
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * weights)"""
 *         return self.d3ptr().sumW2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_43sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__106)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(12, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":164
 * 
 *     #@property
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs)"""
 *         return self.d3ptr().sumWX()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_45sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__107)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(12, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":169
 * 
 *     #@property
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.d3ptr().sumWY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_47sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__108)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(12, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":174
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs)"""
 *         return self.d3ptr().sumWZ()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_49sumWZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__109)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWZ, __pyx_t_2) < 0) __PYX_ERR(12, 174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":179
 * 
 *     #@property
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * xs)"""
 *         return self.d3ptr().sumWX2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_51sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__110)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(12, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":184
 * 
 *     #@property
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.d3ptr().sumWY2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_53sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__111)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 184, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(12, 184, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":189
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * zs * zs)"""
 *         return self.d3ptr().sumWZ2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_55sumWZ2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWZ2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__112)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWZ2, __pyx_t_2) < 0) __PYX_ERR(12, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":194
 * 
 *     #@property
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * ys)"""
 *         return self.d3ptr().sumWXY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_57sumWXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__113)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWXY, __pyx_t_2) < 0) __PYX_ERR(12, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":199
 * 
 *     #@property
 *     def sumWXZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * xs * zs)"""
 *         return self.d3ptr().sumWXZ()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_59sumWXZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWXZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__114)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWXZ, __pyx_t_2) < 0) __PYX_ERR(12, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "include/Dbn3D.pyx":204
 * 
 *     #@property
 *     def sumWYZ(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * zs)"""
 *         return self.d3ptr().sumWYZ()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_61sumWYZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D_sumWYZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__115)); if (unlikely(!__pyx_t_2)) __PYX_ERR(12, 204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Dbn3D->tp_dict, __pyx_n_s_sumWYZ, __pyx_t_2) < 0) __PYX_ERR(12, 204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Dbn3D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_67__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__116)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Dbn3D_69__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Dbn3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__117)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Counter.pyx":30
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_5reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__118)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(13, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":36
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Couner.
 *         Clone this Counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_7clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__119)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(13, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":42
 * 
 * 
 *     def fill(self, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """([w]) -> None.
 *         Fill with given optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_9fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__120)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(13, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":49
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Number of times this counter was filled."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_11numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__121)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(13, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":55
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """None -> float
 *         Effective number of times this counter was filled, computed from weights."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_13effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__122)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(13, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":61
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_15sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__123)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(13, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":67
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_17sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__124)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(13, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":73
 * 
 *     #@property
 *     def val(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_19val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__125)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(13, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":79
 * 
 *     #@property
 *     def err(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Binomial uncertainty on the sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_21err, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_err, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__126)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_err, __pyx_t_2) < 0) __PYX_ERR(13, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":85
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """() -> float
 *         Relative binomial uncertainty on the sum of weights filled into this counter."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_23relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__127)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 85, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(13, 85, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":91
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this counter by the factor w."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_25scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__128)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(13, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":97
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Convert this Counter to a Scatter1D, with x representing the value and error."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_27mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__130)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(13, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "include/Counter.pyx":103
 *         return cutil.new_owned_cls(Scatter1D, s1.newclone())
 * 
 *     def divideBy(self, Counter other, efficiency=False):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter1D s1
 *         if not efficiency:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_29divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__132)); if (unlikely(!__pyx_t_2)) __PYX_ERR(13, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Counter->tp_dict, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(13, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Counter);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_43__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__134)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Counter_45__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Counter___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__135)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Bin.pyx":14
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 *         Dimension of the fill space (should match containing Histo/Profile)"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_3dim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin_dim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__136)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 14, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin->tp_dict, __pyx_n_s_dim, __pyx_t_2) < 0) __PYX_ERR(14, 14, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin);

  /* "include/Bin.pyx":21
 * 
 *     #@property
 *     def numEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The number of entries that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_5numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__137)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 21, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(14, 21, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin);

  /* "include/Bin.pyx":28
 * 
 *     #@property
 *     def effNumEntries(self):             # <<<<<<<<<<<<<<
 *         """
 *         The effective number of entries in the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_7effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__138)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(14, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin);

  /* "include/Bin.pyx":38
 * 
 *     #@property
 *     def sumW(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights: sum(weights).
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_9sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__139)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(14, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin);

  /* "include/Bin.pyx":45
 * 
 *     #@property
 *     def sumW2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-squared: sum(weights * weights)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_11sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__140)); if (unlikely(!__pyx_t_2)) __PYX_ERR(14, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(14, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__141)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_3Bin_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__142)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Bin1D_Dbn1D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_5xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__143)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(15, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_7xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__144)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(15, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_9xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__145)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(15, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_11xMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__146)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xMid, __pyx_t_2) < 0) __PYX_ERR(15, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_13xWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__147)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xWidth, __pyx_t_2) < 0) __PYX_ERR(15, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_15xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__148)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(15, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_17xFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__149)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xFocus, __pyx_t_2) < 0) __PYX_ERR(15, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_19xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__150)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(15, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_21xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__151)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(15, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_23xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__152)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(15, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_25xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__153)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(15, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_27sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__154)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(15, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_29sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__155)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(15, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "include/generated/Bin1D_Dbn1D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn1D self, Bin1D_Dbn1D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn1D. Merge this bin with another of the
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_31merge, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D_merge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__157)); if (unlikely(!__pyx_t_2)) __PYX_ERR(15, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn1D->tp_dict, __pyx_n_s_merge, __pyx_t_2) < 0) __PYX_ERR(15, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_37__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__158)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn1D_39__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__159)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Bin1D_Dbn2D.pyx":45
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """The lower and upper edges."""
 *         return (self.xMin(), self.xMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_5xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__160)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(16, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":49
 *         return (self.xMin(), self.xMax())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The lower bin edge."""
 *         return self.b1ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_7xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__161)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(16, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":53
 *         return self.b1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The upper bin edge."""
 *         return self.b1ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_9xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__162)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(16, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":57
 *         return self.b1ptr().xMax()
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """The midpoint of the bin."""
 *         return self.b1ptr().xMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_11xMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__163)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xMid, __pyx_t_2) < 0) __PYX_ERR(16, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":61
 *         return self.b1ptr().xMid()
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """The width of the bin."""
 *         return self.b1ptr().xWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_13xWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xWidth, __pyx_t_2) < 0) __PYX_ERR(16, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":65
 *         return self.b1ptr().xWidth()
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the x-values that have filled the bin."""
 *         return self.b1ptr().xMean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_15xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__165)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 65, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(16, 65, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":69
 *         return self.b1ptr().xMean()
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """
 *         The focus of the bin. If the bin has been filled, then this
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_17xFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xFocus, __pyx_t_2) < 0) __PYX_ERR(16, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":77
 *         return self.b1ptr().xFocus()
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         """
 *         The variance of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_19xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__167)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(16, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":83
 *         return self.b1ptr().xVariance()
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard deviation of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_21xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(16, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":89
 *         return self.b1ptr().xStdDev()
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         The standard error of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_23xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__169)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 89, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(16, 89, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":95
 *         return self.b1ptr().xStdErr()
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         """
 *         The root-mean-square of the x-values that have filled the bin.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_25xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(16, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":103
 * 
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x: sum(weights * x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_27sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__171)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(16, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":109
 *         return self.b1ptr().sumWX()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         """
 *         The sum of weights-times-x-squared: sum(weights * x * x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_29sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__172)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(16, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "include/generated/Bin1D_Dbn2D.pyx":115
 *         return self.b1ptr().sumWX2()
 * 
 *     def merge(Bin1D_Dbn2D self, Bin1D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         """
 *         merge(other) -> Bin1D_Dbn2D. Merge this bin with another of the
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_31merge, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D_merge, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) __PYX_ERR(16, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin1D_Dbn2D->tp_dict, __pyx_n_s_merge, __pyx_t_2) < 0) __PYX_ERR(16, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin1D_Dbn2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_37__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__174)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin1D_Dbn2D_39__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin1D_Dbn2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/HistoBin1D.pyx":30
 * 
 *     #@property
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.area <==> b.sumW
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_3area, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D_area, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__176)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D->tp_dict, __pyx_n_s_area, __pyx_t_2) < 0) __PYX_ERR(17, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin1D);

  /* "include/HistoBin1D.pyx":40
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         """
 *         b.height <==> b.area / b.width
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_5height, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D_height, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D->tp_dict, __pyx_n_s_height, __pyx_t_2) < 0) __PYX_ERR(17, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin1D);

  /* "include/HistoBin1D.pyx":50
 * 
 *     #@property
 *     def areaErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Error computed using binomial statistics on squared sum of bin
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_7areaErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D_areaErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__178)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 50, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D->tp_dict, __pyx_n_s_areaErr, __pyx_t_2) < 0) __PYX_ERR(17, 50, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin1D);

  /* "include/HistoBin1D.pyx":58
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Height error - scales the s.areaError by the reciprocal of the
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_9heightErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D_heightErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 58, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D->tp_dict, __pyx_n_s_heightErr, __pyx_t_2) < 0) __PYX_ERR(17, 58, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin1D);

  /* "include/HistoBin1D.pyx":66
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         """
 *         Relative error - same for either area or height interpretations.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_11relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__180)); if (unlikely(!__pyx_t_2)) __PYX_ERR(17, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin1D->tp_dict, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(17, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_23__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin1D_25__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__182)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/ProfileBin1D.pyx":43
 * 
 * 
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         """The mean of the y-values that have filled the bin."""
 *         return self.pb1ptr().mean()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_3mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(18, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":47
 *         return self.pb1ptr().mean()
 * 
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         """The variance of the y-values that have filled the bin."""
 *         return self.pb1ptr().variance()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_5variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__184)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(18, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":51
 *         return self.pb1ptr().variance()
 * 
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         """The standard deviation of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdDev()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_7stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__185)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(18, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":55
 *         return self.pb1ptr().stdDev()
 * 
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         """The standard error of the y-values that have filled the bin."""
 *         return self.pb1ptr().stdErr()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_9stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(18, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":59
 *         return self.pb1ptr().stdErr()
 * 
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         """The RMS of the y-values that have filled the bin."""
 *         return self.pb1ptr().rms()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_11rms, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_rms, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__187)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_rms, __pyx_t_2) < 0) __PYX_ERR(18, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":64
 * 
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys)"""
 *         return self.pb1ptr().sumWY()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_13sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(18, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "include/ProfileBin1D.pyx":68
 *         return self.pb1ptr().sumWY()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         """sum(weights * ys * ys)"""
 *         return self.pb1ptr().sumWY2()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_15sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__189)); if (unlikely(!__pyx_t_2)) __PYX_ERR(18, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin1D->tp_dict, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(18, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_27__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin1D_29__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__191)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/AnalysisObject.pyx":26
 * 
 *     #@property
 *     def type(self):             # <<<<<<<<<<<<<<
 *         "String identifier for this type"
 *         return self.aoptr().type()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_3type, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_type, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__192)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(1, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":31
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         "Fill dimension or plot dimension of this object, for fillables and scatters respectively"
 *         return self.aoptr().dim()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_5dim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_dim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 31, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_dim, __pyx_t_2) < 0) __PYX_ERR(1, 31, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":36
 * 
 *     #@property
 *     def annotations(self):             # <<<<<<<<<<<<<<
 *         """() -> list[str]
 *         A list of all annotation/metadata keys."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_7annotations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_annotations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_annotations, __pyx_t_2) < 0) __PYX_ERR(1, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":42
 * 
 *     #@property
 *     def annotationsDict(self):             # <<<<<<<<<<<<<<
 *         """() -> dict[str->str]
 *         A dict of all annotations/metadata entries."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_9annotationsDict, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_annotationsDict, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_annotationsDict, __pyx_t_2) < 0) __PYX_ERR(1, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":48
 *         return dict((k.lower(), self.annotation(k)) for k in self.annotations())
 * 
 *     def annotation(self, k, default=None):             # <<<<<<<<<<<<<<
 *         """Get annotation k from this object (falling back to default if not set).
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_11annotation, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_annotation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__200);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_annotation, __pyx_t_2) < 0) __PYX_ERR(1, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":61
 *         return rtn
 * 
 *     def setAnnotation(self, k, v):             # <<<<<<<<<<<<<<
 *         """Set annotation k on this object."""
 *         self.aoptr().setAnnotation(<string>k,
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_13setAnnotation, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_setAnnotation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__202)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_setAnnotation, __pyx_t_2) < 0) __PYX_ERR(1, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":66
 *                                    <string>util._autostr(v))
 * 
 *     def hasAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Check if this object has annotation k."""
 *         return self.aoptr().hasAnnotation(<string>k)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_15hasAnnotation, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_hasAnnotation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__204)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 66, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_hasAnnotation, __pyx_t_2) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":70
 *         return self.aoptr().hasAnnotation(<string>k)
 * 
 *     def rmAnnotation(self, k):             # <<<<<<<<<<<<<<
 *         """Remove annotation k from this object."""
 *         self.aoptr().rmAnnotation(<string>k)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_17rmAnnotation, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_rmAnnotation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__205)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_rmAnnotation, __pyx_t_2) < 0) __PYX_ERR(1, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":74
 *         self.aoptr().rmAnnotation(<string>k)
 * 
 *     def clearAnnotations(self):             # <<<<<<<<<<<<<<
 *         """Clear the annotations dictionary."""
 *         self.aoptr().clearAnnotations()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_19clearAnnotations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_clearAnnotations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__206)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 74, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_clearAnnotations, __pyx_t_2) < 0) __PYX_ERR(1, 74, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":79
 * 
 * 
 *     def dump(self):             # <<<<<<<<<<<<<<
 *         """A human readable representation of this object."""
 *         try:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_21dump, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_dump, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__208)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(1, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":92
 * 
 *     #@property
 *     def name(self):             # <<<<<<<<<<<<<<
 *         """
 *         Return the histogram name, i.e. the last part of the path (which may be empty).
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_23name, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_name, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__209)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 92, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(1, 92, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":99
 * 
 * 
 *     def path(self):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_25path, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_path, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__210)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_path, __pyx_t_2) < 0) __PYX_ERR(1, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":106
 *         return self.aoptr().path()
 * 
 *     def setPath(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         Used for persistence and as a unique identifier. Must begin with
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_27setPath, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_setPath, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__212)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_setPath, __pyx_t_2) < 0) __PYX_ERR(1, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":125
 * 
 * 
 *     def title(self):             # <<<<<<<<<<<<<<
 *         """
 *         Histogram title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_29title, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_title, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__213)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_title, __pyx_t_2) < 0) __PYX_ERR(1, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "include/AnalysisObject.pyx":131
 *         return self.aoptr().title()
 * 
 *     def setTitle(self, title):             # <<<<<<<<<<<<<<
 *         """
 *         Set the histogram title (optional)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_31setTitle, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject_setTitle, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__215)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject->tp_dict, __pyx_n_s_setTitle, __pyx_t_2) < 0) __PYX_ERR(1, 131, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_AnalysisObject);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_35__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__216)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_14AnalysisObject_37__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_AnalysisObject___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__217)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/AnalysisObject.pyx":153
 * 
 * ## Convenience alias
 * AO = AnalysisObject             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AO, ((PyObject *)__pyx_ptype_4yoda_4core_AnalysisObject)) < 0) __PYX_ERR(1, 153, __pyx_L1_error)

  /* "include/Histo1D.pyx":1
 * import util             # <<<<<<<<<<<<<<
 * 
 * # cdef class Binned(AnalysisObject):
 */
  __pyx_t_2 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_util, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_util, __pyx_t_2) < 0) __PYX_ERR(2, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Histo1D.pyx":42
 *         util.try_loop([self.__init2, self.__init5, self.__init3], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_3_Histo1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__219)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__init2, __pyx_t_2) < 0) __PYX_ERR(2, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":48
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_5_Histo1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__222)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__init3, __pyx_t_2) < 0) __PYX_ERR(2, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":63
 *             self.addBins(bins)
 * 
 *     def __init5(self, nbins, low, high, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_7_Histo1D__init5, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___init5, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__224)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__init5, __pyx_t_2) < 0) __PYX_ERR(2, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":88
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_15reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__225)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 88, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(2, 88, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":94
 * 
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo1D.
 *         Clone this Histo1D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__226)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(2, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":100
 * 
 * 
 *     def fill(self, x, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,[w]) -> None.
 *         Fill with given x value and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_19fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__227)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(2, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":106
 * 
 * 
 *     def fillBin(self, size_t ix, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,[w]) -> None.
 *         Fill bin ix and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_21fillBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_fillBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__229)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_fillBin, __pyx_t_2) < 0) __PYX_ERR(2, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":112
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the total distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_23totalDbn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_totalDbn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__230)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_totalDbn, __pyx_t_2) < 0) __PYX_ERR(2, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":117
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the underflow distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_25underflow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_underflow, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__231)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_underflow, __pyx_t_2) < 0) __PYX_ERR(2, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":122
 *         return cutil.new_borrowed_cls(Dbn1D, &self.h1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """None -> Dbn1D
 *         The Dbn1D representing the overflow distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_27overflow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_overflow, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__232)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_overflow, __pyx_t_2) < 0) __PYX_ERR(2, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":128
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_29integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__234)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(2, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":133
 *         return self.h1ptr().integral(includeoverflows)
 * 
 *     def integralRange(self, int ia, int ib):             # <<<<<<<<<<<<<<
 *         """(int, int) -> float
 *         Integral between bins ia..ib inclusive"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_31integralRange, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_integralRange, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__237)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_integralRange, __pyx_t_2) < 0) __PYX_ERR(2, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":138
 *         return self.h1ptr().integralRange(ia, ib)
 * 
 *     def integralTo(self, int ia, includeunderflow=True):             # <<<<<<<<<<<<<<
 *         """(int, [bool]) -> float
 *         Integral up to bin ia inclusive, optionally excluding the underflow"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_33integralTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_integralTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__239)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_integralTo, __pyx_t_2) < 0) __PYX_ERR(2, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":144
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_35numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__240)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(2, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":149
 *         return self.h1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights, and optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_37effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__241)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(2, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":154
 *         return self.h1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_39sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__242)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(2, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":159
 *         return self.h1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_41sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__243)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(2, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":165
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_43xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__244)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(2, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":170
 *         return self.h1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_45xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__245)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(2, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":175
 *         return self.h1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_47xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__246)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(2, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":180
 *         return self.h1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_49xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__247)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(2, 180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":185
 *         return self.h1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_51xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__248)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(2, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":191
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """ (float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_53scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__249)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(2, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":196
 *         self.h1ptr().scaleW(w)
 * 
 *     def normalize(self, normto=1.0, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """ (float, bool) -> None.
 *         Normalize the histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_55normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__251)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__252);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(2, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":202
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h1ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_57xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__253)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(2, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":206
 *         return self.h1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h1ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_59xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__254)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(2, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":210
 *         return self.h1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_61numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__255)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(2, 210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":215
 *         return self.h1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of x-axis bins (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_63numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__256)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(2, 215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":220
 *         return self.h1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_65bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__257)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(2, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":224
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin (equivalent to bins[i]"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h1ptr().numBins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_67bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__259)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(2, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":229
 *         return cutil.new_borrowed_cls(HistoBin1D, & self.h1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.h1ptr().binIndexAt(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_69binIndexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_binIndexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__260)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_binIndexAt, __pyx_t_2) < 0) __PYX_ERR(2, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":233
 *         return self.h1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_71binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__261)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(2, 233, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":240
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """(low, high) -> None.
 *         Add a bin."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_73addBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_addBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__263)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 240, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_addBin, __pyx_t_2) < 0) __PYX_ERR(2, 240, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":245
 *         self.h1ptr().addBin(low, high)
 * 
 *     def addBins(self, edges_or_bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_75addBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_addBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__265)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 245, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_addBins, __pyx_t_2) < 0) __PYX_ERR(2, 245, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":254
 *                        self.__addBins_bins], arg)
 * 
 *     def __addBins_edges(self, edges):             # <<<<<<<<<<<<<<
 *         cdef vector[double] cedges
 *         for edge in edges:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_77_Histo1D__addBins_edges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___addBins_edges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__267)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__addBins_edges, __pyx_t_2) < 0) __PYX_ERR(2, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":261
 *             self.h1ptr().addBins(cedges)
 * 
 *     def __addBins_bins(self, bins):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_79_Histo1D__addBins_bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___addBins_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__269)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 261, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__addBins_bins, __pyx_t_2) < 0) __PYX_ERR(2, 261, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":264
 *         self.__addBins_tuples([ b.xEdges for b in bins ])
 * 
 *     def __addBins_points(self, points):             # <<<<<<<<<<<<<<
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_81_Histo1D__addBins_points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___addBins_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__271)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__addBins_points, __pyx_t_2) < 0) __PYX_ERR(2, 264, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":267
 *         self.__addBins_tuples([ p.xWidth for p in points ])
 * 
 *     def __addBins_tuples(self, tuples):             # <<<<<<<<<<<<<<
 *         cdef double a, b
 *         for a, b in tuples:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_83_Histo1D__addBins_tuples, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___addBins_tuples, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__273)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_Histo1D__addBins_tuples, __pyx_t_2) < 0) __PYX_ERR(2, 267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":273
 * 
 * 
 *     def mergeBins(self, ia, ib):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_85mergeBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_mergeBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__274)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_mergeBins, __pyx_t_2) < 0) __PYX_ERR(2, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":278
 *         self.h1ptr().mergeBins(ia, ib)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_87rebinBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_rebinBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__276)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__277);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_rebinBy, __pyx_t_2) < 0) __PYX_ERR(2, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":285
 *         self.h1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_89rebinTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_rebinTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__279)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 285, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_rebinTo, __pyx_t_2) < 0) __PYX_ERR(2, 285, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":290
 *         self.h1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_91rebin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_rebin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__281)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_rebin, __pyx_t_2) < 0) __PYX_ERR(2, 290, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":299
 * 
 * 
 *     def mkScatter(self, usefocus=False, binwidthdiv=True, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Histo1D to a Scatter2D, with optional argument to control the x-positions
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_93mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__283)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__284);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(2, 299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":308
 * 
 * 
 *     def toIntegral(self, efficiency=False, includeunderflow=True, includeoverflow=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_95toIntegral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_toIntegral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__286)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 308, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__287);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_toIntegral, __pyx_t_2) < 0) __PYX_ERR(2, 308, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":325
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 * 
 *     def divideBy(self, Histo1D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo1D -> Scatter2D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_97divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__289)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(2, 325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":416
 *     #     return [b.sumW for b in self.bins]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_111_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__291)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(2, 416, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":423
 *             return xs
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.h1ptr().xEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_113xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__292)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 423, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(2, 423, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":427
 *         return self._mknp(self.h1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h1ptr().xWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_115xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__293)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(2, 427, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":431
 *         return self._mknp(self.h1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_117xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__295)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 431, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(2, 431, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":435
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_119xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__296)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 435, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(2, 435, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":439
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_121xMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__297)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMids, __pyx_t_2) < 0) __PYX_ERR(2, 439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":443
 *         return self._mknp([b.xMid() for b in self.bins()])
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_123xFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__298)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xFoci, __pyx_t_2) < 0) __PYX_ERR(2, 443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":447
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_125xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__300)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(2, 447, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":450
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_127xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__302)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(2, 450, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":456
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_129xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__303)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(2, 456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":460
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_131xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__304)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 460, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(2, 460, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":465
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_133sumWs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_sumWs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__306)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_sumWs, __pyx_t_2) < 0) __PYX_ERR(2, 465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":470
 *         return rtn
 * 
 *     def heights(self):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         return self._mknp([b.height() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_135heights, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_heights, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__307)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_heights, __pyx_t_2) < 0) __PYX_ERR(2, 470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":474
 *         return self._mknp([b.height() for b in self.bins()])
 * 
 *     def areas(self):             # <<<<<<<<<<<<<<
 *         """All areas of the histo."""
 *         return self._mknp([b.area() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_137areas, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_areas, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__308)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 474, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_areas, __pyx_t_2) < 0) __PYX_ERR(2, 474, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":478
 *         return self._mknp([b.area() for b in self.bins()])
 * 
 *     def yVals(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areas() if area else self.heights()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_139yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__310)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(2, 478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":482
 * 
 * 
 *     def heightErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_141heightErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_heightErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__311)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 482, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_heightErrs, __pyx_t_2) < 0) __PYX_ERR(2, 482, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":489
 *         return self._mknp([b.heightErr() for b in self.bins()])
 * 
 *     def areaErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All area errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_143areaErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_areaErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__312)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_areaErrs, __pyx_t_2) < 0) __PYX_ERR(2, 489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":500
 *         return self._mknp([b.areaErr() for b in self.bins()])
 * 
 *     def relErrs(self): #, asymm=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_145relErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_relErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__313)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_relErrs, __pyx_t_2) < 0) __PYX_ERR(2, 500, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":507
 *         return self._mknp([b.relErr() for b in self.bins()])
 * 
 *     def yErrs(self, area=False):             # <<<<<<<<<<<<<<
 *         return self.areaErrs() if area else self.heightErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_147yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__314)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(2, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":511
 * 
 * 
 *     def yMins(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_149yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__316)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 511, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(2, 511, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":516
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, area=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals(area)
 *         es = self.yErrs(area)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_151yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__317)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(2, 516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":521
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_153yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__318)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 521, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(2, 521, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "include/Histo1D.pyx":525
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_155yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__319)); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo1D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(2, 525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_157__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__320)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo1D_159__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__321)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Histo1D.pyx":531
 * 
 * ## Convenience alias
 * H1D = Histo1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_H1D, ((PyObject *)__pyx_ptype_4yoda_4core_Histo1D)) < 0) __PYX_ERR(2, 531, __pyx_L1_error)

  /* "include/Profile1D.pyx":37
 *         util.try_loop([self.__init2, self.__init3, self.__init5], *args, **kwargs)
 * 
 *     def __init2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_3_Profile1D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__322)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_Profile1D__init2, __pyx_t_2) < 0) __PYX_ERR(19, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":44
 * 
 *     # TODO: Is Cython clever enough that we can make 3a and 3b versions and let it do the type inference?
 *     def __init3(self, bins_or_edges, path="", title=""):             # <<<<<<<<<<<<<<
 *         # TODO: Do this type-checking better
 *         cdef vector[double] edges
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_5_Profile1D__init3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D___init3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__323)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_Profile1D__init3, __pyx_t_2) < 0) __PYX_ERR(19, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":59
 *             self.addBins(bins)
 * 
 *     def __init5(self, size_t nbins, double lower, double upper, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_7_Profile1D__init5, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D___init5, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 59, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_Profile1D__init5, __pyx_t_2) < 0) __PYX_ERR(19, 59, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":82
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_15reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__326)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(19, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":87
 *         self.p1ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile1D.
 *         Clone this Profile1D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__327)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(19, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":93
 * 
 * 
 *     def fill(self, x, y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x & y values and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_19fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__328)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 93, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(19, 93, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":98
 *         self.p1ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t ix, double y, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(ix,y,[w]) -> None.
 *         Fill bin ix with y value and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_21fillBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_fillBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__330)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_fillBin, __pyx_t_2) < 0) __PYX_ERR(19, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":104
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_23totalDbn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_totalDbn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_totalDbn, __pyx_t_2) < 0) __PYX_ERR(19, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":110
 *             Dbn2D, &self.p1ptr().totalDbn(), self)
 * 
 *     def underflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the underflow distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_25underflow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_underflow, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__332)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_underflow, __pyx_t_2) < 0) __PYX_ERR(19, 110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":116
 *             Dbn2D, &self.p1ptr().underflow(), self)
 * 
 *     def overflow(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the overflow distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_27overflow, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_overflow, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__333)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_overflow, __pyx_t_2) < 0) __PYX_ERR(19, 116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":123
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_29numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__334)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(19, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":128
 *         return self.p1ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_31effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__335)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(19, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":133
 *         return self.p1ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_33sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__336)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(19, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":138
 *         return self.p1ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_35sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__337)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(19, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":144
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_37xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__338)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(19, 144, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":149
 *         return self.p1ptr().xMean(includeoverflows)
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_39xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__339)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(19, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":154
 *         return self.p1ptr().xVariance(includeoverflows)
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_41xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__340)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(19, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":159
 *         return self.p1ptr().xStdDev(includeoverflows)
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_43xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__341)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(19, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":164
 *         return self.p1ptr().xStdErr(includeoverflows)
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_45xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__342)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(19, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":170
 * 
 * 
 *     def scaleW(self, double w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_47scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__343)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(19, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":175
 *         self.p1ptr().scaleW(w)
 * 
 *     def scaleY(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the y-direction (profiled value) in this histogram by the factor f."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_49scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__345)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_scaleY, __pyx_t_2) < 0) __PYX_ERR(19, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":181
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p1ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_51xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__346)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(19, 181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":185
 *         return self.p1ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p1ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_53xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__347)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(19, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":189
 *         return self.p1ptr().xMax()
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_55numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(19, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":194
 *         return self.p1ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins on the x-axis (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_57numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__349)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(19, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":199
 *         return self.p1ptr().numBinsX()
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_59bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__350)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(19, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":203
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.numBins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_61bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__351)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(19, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":208
 *         return cutil.new_borrowed_cls(ProfileBin1D, & self.p1ptr().bin(i), self)
 * 
 *     def binIndexAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin index containing position x"""
 *         return self.p1ptr().binIndexAt(x)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_63binIndexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_binIndexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__352)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_binIndexAt, __pyx_t_2) < 0) __PYX_ERR(19, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":212
 *         return self.p1ptr().binIndexAt(x)
 * 
 *     def binAt(self, x):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position x"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_65binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__353)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(19, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":219
 *         return self.bin(self.binIndexAt(x))
 * 
 *     def addBin(self, low, high):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p1ptr().addBin(low, high)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_67addBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_addBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__354)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 219, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_addBin, __pyx_t_2) < 0) __PYX_ERR(19, 219, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":224
 *         return self
 * 
 *     def addBins(self, edges):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_69addBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_addBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__356)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_addBins, __pyx_t_2) < 0) __PYX_ERR(19, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":234
 * 
 * 
 *     def mergeBins(self, a, b):             # <<<<<<<<<<<<<<
 *         """mergeBins(ia, ib) -> None.
 *         Merge bins from indices ia through ib."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_71mergeBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_mergeBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__358)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_mergeBins, __pyx_t_2) < 0) __PYX_ERR(19, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":239
 *         self.p1ptr().mergeBins(a, b)
 * 
 *     def rebinBy(self, n, begin=0, end=None):             # <<<<<<<<<<<<<<
 *         """(n) -> None.
 *         Merge every group of n bins together (between begin and end, if specified)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_73rebinBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_rebinBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__359)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__277);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_rebinBy, __pyx_t_2) < 0) __PYX_ERR(19, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":246
 *         self.p1ptr().rebinBy(int(n), begin, end)
 * 
 *     def rebinTo(self, edges):             # <<<<<<<<<<<<<<
 *         """([edges]) -> None.
 *         Merge bins to produce the given new edges... which must be a subset of the current ones."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_75rebinTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_rebinTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__360)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 246, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_rebinTo, __pyx_t_2) < 0) __PYX_ERR(19, 246, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":251
 *         self.p1ptr().rebinTo(edges)
 * 
 *     def rebin(self, arg, **kwargs):             # <<<<<<<<<<<<<<
 *         """(n) -> None or ([edges]) -> None
 *         Merge bins, like rebinBy if an int argument is given; like rebinTo if an iterable is given."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_77rebin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_rebin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__361)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_rebin, __pyx_t_2) < 0) __PYX_ERR(19, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":260
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False, uflow_binwidth=-1, oflow_binwidth=-1):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Convert this Profile1D to a Scatter2D, with y representing
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_79mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__363)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__364);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(19, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":269
 * 
 * 
 *     def divideBy(self, Profile1D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter2D s = c.Profile1D_div_Profile1D(deref(self.p1ptr()), deref(h.p1ptr()))
 *         return cutil.new_owned_cls(Scatter2D, s.newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_81divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__366)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(19, 269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":307
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_95_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__367)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(19, 307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":317
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """All x edges of the histo."""
 *         return self._mknp(self.p1ptr().xEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_97xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__368)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(19, 317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":321
 *         return self._mknp(self.p1ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p1ptr().xWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_99xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__369)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 321, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(19, 321, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":325
 *         return self._mknp(self.p1ptr().xWidths())
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low edges of the histo."""
 *         return self._mknp([b.xMin() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_101xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__370)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(19, 325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":329
 *         return self._mknp([b.xMin() for b in self.bins()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high edges of the histo."""
 *         return self._mknp([b.xMax() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_103xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__371)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(19, 329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":333
 *         return self._mknp([b.xMax() for b in self.bins()])
 * 
 *     def xMids(self):             # <<<<<<<<<<<<<<
 *         """All x bin midpoints of the histo."""
 *         return self._mknp([b.xMid() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_105xMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__372)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMids, __pyx_t_2) < 0) __PYX_ERR(19, 333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":340
 *     ## Filling properties in x
 * 
 *     def xFoci(self):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         return self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_107xFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__373)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 340, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xFoci, __pyx_t_2) < 0) __PYX_ERR(19, 340, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":344
 *         return self._mknp([b.xFocus() for b in self.bins()])
 * 
 *     def xVals(self, foci=False):             # <<<<<<<<<<<<<<
 *         return self.xFoci() if foci else self.xMids()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_109xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__374)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(19, 344, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":347
 *         return self.xFoci() if foci else self.xMids()
 * 
 *     def xErrs(self, foci=False):             # <<<<<<<<<<<<<<
 *         if foci:
 *             return [(b.xFocus()-b.xMin(), b.xMax()-b.xFocus()) for b in self.bins()]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_111xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__375)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(19, 347, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":353
 *             return [(b.xMid()-b.xMin(), b.xMax()-b.xMid()) for b in self.bins()]
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_113xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__376)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(19, 353, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":357
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_115xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__377)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(19, 357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":362
 * 
 * 
 *     def sumWs(self):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_117sumWs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_sumWs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__378)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_sumWs, __pyx_t_2) < 0) __PYX_ERR(19, 362, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":367
 *         return rtn
 * 
 *     def yMeans(self):             # <<<<<<<<<<<<<<
 *         """All y heights y means."""
 *         return self._mknp([b.mean() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_119yMeans, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yMeans, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__379)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yMeans, __pyx_t_2) < 0) __PYX_ERR(19, 367, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":371
 *         return self._mknp([b.mean() for b in self.bins()])
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self.yMeans()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_121yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__380)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(19, 371, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":375
 * 
 * 
 *     def yStdErrs(self):             # <<<<<<<<<<<<<<
 *         """All standard errors on the y means."""
 *         return self._mknp([b.stdErr() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_123yStdErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yStdErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__381)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yStdErrs, __pyx_t_2) < 0) __PYX_ERR(19, 375, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":379
 *         return self._mknp([b.stdErr() for b in self.bins()])
 * 
 *     def yStdDevs(self):             # <<<<<<<<<<<<<<
 *         """All standard deviations of the y distributions."""
 *         return self._mknp([b.stdDev() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_125yStdDevs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yStdDevs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__382)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yStdDevs, __pyx_t_2) < 0) __PYX_ERR(19, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":383
 *         return self._mknp([b.stdDev() for b in self.bins()])
 * 
 *     def yErrs(self, sd=False):             # <<<<<<<<<<<<<<
 *         return self.yStdDevs() if sd else self.yStdErrs()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_127yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__384)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(19, 383, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":387
 * 
 * 
 *     def yMins(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_129yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__386)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(19, 387, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":392
 *         return self._mknp([y-e for (y,e) in zip(ys,es)])
 * 
 *     def yMaxs(self, sd=False):             # <<<<<<<<<<<<<<
 *         ys = self.yVals()
 *         es = self.yErrs(sd)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_131yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__387)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(19, 392, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":397
 *         return self._mknp([y+e for (y,e) in zip(ys,es)])
 * 
 *     def yMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return min(self.yMins(sd))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_133yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__388)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(19, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "include/Profile1D.pyx":401
 *         return min(self.yMins(sd))
 * 
 *     def yMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs(sd))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_135yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__389)); if (unlikely(!__pyx_t_2)) __PYX_ERR(19, 401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile1D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(19, 401, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_137__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__390)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile1D_139__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__391)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Profile1D.pyx":407
 * 
 * ## Convenience alias
 * P1D = Profile1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P1D, ((PyObject *)__pyx_ptype_4yoda_4core_Profile1D)) < 0) __PYX_ERR(19, 407, __pyx_L1_error)

  /* "include/generated/Bin2D_Dbn2D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_5xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__392)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(20, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_7yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__393)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(20, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_9xyEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__394)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyEdges, __pyx_t_2) < 0) __PYX_ERR(20, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_11xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__395)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(20, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_13yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__396)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(20, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_15xyMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__397)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyMin, __pyx_t_2) < 0) __PYX_ERR(20, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_17xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__398)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(20, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_19yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__399)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(20, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_21xyMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__400)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyMax, __pyx_t_2) < 0) __PYX_ERR(20, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_23xMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__401)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xMid, __pyx_t_2) < 0) __PYX_ERR(20, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_25yMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__402)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yMid, __pyx_t_2) < 0) __PYX_ERR(20, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_27xyMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__403)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyMid, __pyx_t_2) < 0) __PYX_ERR(20, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_29xWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__404)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xWidth, __pyx_t_2) < 0) __PYX_ERR(20, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_31yWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__405)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yWidth, __pyx_t_2) < 0) __PYX_ERR(20, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_33xyWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__406)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyWidths, __pyx_t_2) < 0) __PYX_ERR(20, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_35area, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_area, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__407)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_area, __pyx_t_2) < 0) __PYX_ERR(20, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_37xFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__408)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xFocus, __pyx_t_2) < 0) __PYX_ERR(20, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_39yFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__409)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yFocus, __pyx_t_2) < 0) __PYX_ERR(20, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_41xyFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__410)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyFocus, __pyx_t_2) < 0) __PYX_ERR(20, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_43xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__411)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(20, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_45yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__412)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(20, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_47xyMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__413)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyMean, __pyx_t_2) < 0) __PYX_ERR(20, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_49xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__414)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(20, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_51yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__415)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(20, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_53xyVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__416)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyVariance, __pyx_t_2) < 0) __PYX_ERR(20, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_55xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__417)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(20, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_57yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__418)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(20, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_59xyStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__419)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyStdDev, __pyx_t_2) < 0) __PYX_ERR(20, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_61xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__420)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(20, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_63yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__421)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(20, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_65xyStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__422)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyStdErr, __pyx_t_2) < 0) __PYX_ERR(20, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_67xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__423)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(20, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_69yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__424)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(20, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_71xyRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_xyRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__425)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_xyRMS, __pyx_t_2) < 0) __PYX_ERR(20, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_73sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__426)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(20, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_75sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__427)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(20, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_77sumWXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_sumWXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__428)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_sumWXY, __pyx_t_2) < 0) __PYX_ERR(20, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_79sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__429)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(20, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_81sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__430)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(20, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "include/generated/Bin2D_Dbn2D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn2D self, Bin2D_Dbn2D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_83adjacentTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D_adjacentTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__431)); if (unlikely(!__pyx_t_2)) __PYX_ERR(20, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn2D->tp_dict, __pyx_n_s_adjacentTo, __pyx_t_2) < 0) __PYX_ERR(20, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_89__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__432)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn2D_91__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__433)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/generated/Bin2D_Dbn3D.pyx":35
 * 
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x edges.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_5xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__434)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 35, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(21, 35, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":42
 *         return (x.first, x.second)
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper y edges.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_7yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__435)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(21, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":49
 *         return (y.first, y.second)
 * 
 *     def xyEdges(self):             # <<<<<<<<<<<<<<
 *         """
 *         The lower and upper x,y edge pairs.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_9xyEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__436)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyEdges, __pyx_t_2) < 0) __PYX_ERR(21, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":56
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in x."""
 *         return self.b2ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_11xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__437)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(21, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":60
 *         return self.b2ptr().xMin()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low edge in y."""
 *         return self.b2ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_13yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__438)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(21, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":64
 *         return self.b2ptr().yMin()
 * 
 *     def xyMin(self):             # <<<<<<<<<<<<<<
 *         """Low edges in x,y."""
 *         return util.XY(self.xMin(), self.yMin())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_15xyMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__439)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyMin, __pyx_t_2) < 0) __PYX_ERR(21, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":69
 * 
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in x."""
 *         return self.b2ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_17xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__440)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(21, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":73
 *         return self.b2ptr().xMax()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High edge in y."""
 *         return self.b2ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_19yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__441)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(21, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":77
 *         return self.b2ptr().yMax()
 * 
 *     def xyMax(self):             # <<<<<<<<<<<<<<
 *         """High edges in x,y."""
 *         return util.XY(self.xMax(), self.yMax())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_21xyMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__442)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 77, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyMax, __pyx_t_2) < 0) __PYX_ERR(21, 77, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":82
 * 
 * 
 *     def xMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in x"""
 *         return self.b2ptr().xMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_23xMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__443)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xMid, __pyx_t_2) < 0) __PYX_ERR(21, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":86
 *         return self.b2ptr().xMid()
 * 
 *     def yMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin in y"""
 *         return self.b2ptr().yMid()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_25yMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__444)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yMid, __pyx_t_2) < 0) __PYX_ERR(21, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":90
 *         return self.b2ptr().yMid()
 * 
 *     def xyMid(self):             # <<<<<<<<<<<<<<
 *         """Geometric centre of the bin"""
 *         return util.XY(self.xMid(), self.yMid())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_27xyMid, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyMid, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__445)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyMid, __pyx_t_2) < 0) __PYX_ERR(21, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":95
 * 
 * 
 *     def xWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in x"""
 *         return self.b2ptr().xWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_29xWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__446)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xWidth, __pyx_t_2) < 0) __PYX_ERR(21, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":99
 *         return self.b2ptr().xWidth()
 * 
 *     def yWidth(self):             # <<<<<<<<<<<<<<
 *         """Width of the bin in y"""
 *         return self.b2ptr().yWidth()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_31yWidth, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yWidth, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__447)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yWidth, __pyx_t_2) < 0) __PYX_ERR(21, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":103
 *         return self.b2ptr().yWidth()
 * 
 *     def xyWidths(self):             # <<<<<<<<<<<<<<
 *         """The widths of this bin in the x- and y-dimensions."""
 *         return util.XY(self.xWidth(), self.yWidth())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_33xyWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__448)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 103, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyWidths, __pyx_t_2) < 0) __PYX_ERR(21, 103, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":108
 * 
 * 
 *     def area(self):             # <<<<<<<<<<<<<<
 *         """The area of this bin in the x-y plane."""
 *         return self.b2ptr().area()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_35area, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_area, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__449)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_area, __pyx_t_2) < 0) __PYX_ERR(21, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":113
 * 
 * 
 *     def xFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in x"""
 *         return self.b2ptr().xFocus()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_37xFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__450)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xFocus, __pyx_t_2) < 0) __PYX_ERR(21, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":117
 *         return self.b2ptr().xFocus()
 * 
 *     def yFocus(self):             # <<<<<<<<<<<<<<
 *         """Focus of the bin in y"""
 *         return self.b2ptr().yFocus()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_39yFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__451)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yFocus, __pyx_t_2) < 0) __PYX_ERR(21, 117, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":121
 *         return self.b2ptr().yFocus()
 * 
 *     def xyFocus(self):             # <<<<<<<<<<<<<<
 *         """The focus of the bin in the x- and y-dimensions"""
 *         return util.XY(self.xFocus(), self.yFocus())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_41xyFocus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyFocus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__452)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyFocus, __pyx_t_2) < 0) __PYX_ERR(21, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":126
 * 
 * 
 *     def xMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xMean()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_43xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__453)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(21, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":129
 *         return self.b2ptr().xMean()
 * 
 *     def yMean(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yMean()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_45yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__454)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(21, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":132
 *         return self.b2ptr().yMean()
 * 
 *     def xyMean(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xMean(), self.yMean())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_47xyMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__455)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyMean, __pyx_t_2) < 0) __PYX_ERR(21, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":136
 * 
 * 
 *     def xVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_49xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__456)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(21, 136, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":139
 *         return self.b2ptr().xVariance()
 * 
 *     def yVariance(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xVariance()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_51yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__457)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(21, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":142
 *         return self.b2ptr().xVariance()
 * 
 *     def xyVariance(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xVariance(), self.yVariance())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_53xyVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__458)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyVariance, __pyx_t_2) < 0) __PYX_ERR(21, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":146
 * 
 * 
 *     def xStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdDev()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_55xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__459)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":149
 *         return self.b2ptr().xStdDev()
 * 
 *     def yStdDev(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdDev()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_57yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__460)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 149, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 149, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":152
 *         return self.b2ptr().yStdDev()
 * 
 *     def xyStdDev(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdDev(), self.yStdDev())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_59xyStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__461)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyStdDev, __pyx_t_2) < 0) __PYX_ERR(21, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":156
 * 
 * 
 *     def xStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xStdErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_61xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__462)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 156, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 156, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":159
 *         return self.b2ptr().xStdErr()
 * 
 *     def yStdErr(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yStdErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_63yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__463)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":162
 *         return self.b2ptr().yStdErr()
 * 
 *     def xyStdErr(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xStdErr(), self.yStdErr())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_65xyStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__464)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyStdErr, __pyx_t_2) < 0) __PYX_ERR(21, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":166
 * 
 * 
 *     def xRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().xRMS()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_67xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__465)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(21, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":169
 *         return self.b2ptr().xRMS()
 * 
 *     def yRMS(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().yRMS()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_69yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__466)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 169, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(21, 169, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":172
 *         return self.b2ptr().yRMS()
 * 
 *     def xyRMS(self):             # <<<<<<<<<<<<<<
 *         return util.XY(self.xRMS(), self.yRMS())
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_71xyRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_xyRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__467)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_xyRMS, __pyx_t_2) < 0) __PYX_ERR(21, 172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":179
 *     ##################
 * 
 *     def sumWX(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_73sumWX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_sumWX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__468)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_sumWX, __pyx_t_2) < 0) __PYX_ERR(21, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":182
 *         return self.b2ptr().sumWX()
 * 
 *     def sumWY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_75sumWY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_sumWY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__469)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_sumWY, __pyx_t_2) < 0) __PYX_ERR(21, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":185
 *         return self.b2ptr().sumWY()
 * 
 *     def sumWXY(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWXY()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_77sumWXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_sumWXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__470)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_sumWXY, __pyx_t_2) < 0) __PYX_ERR(21, 185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":188
 *         return self.b2ptr().sumWXY()
 * 
 *     def sumWX2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWX2()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_79sumWX2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_sumWX2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__471)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_sumWX2, __pyx_t_2) < 0) __PYX_ERR(21, 188, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":191
 *         return self.b2ptr().sumWX2()
 * 
 *     def sumWY2(self):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().sumWY2()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_81sumWY2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_sumWY2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__472)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 191, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_sumWY2, __pyx_t_2) < 0) __PYX_ERR(21, 191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "include/generated/Bin2D_Dbn3D.pyx":199
 *     #    return self
 * 
 *     def adjacentTo(Bin2D_Dbn3D self, Bin2D_Dbn3D other):             # <<<<<<<<<<<<<<
 *         return self.b2ptr().adjacentTo(deref(other.b2ptr()))
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_83adjacentTo, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D_adjacentTo, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__473)); if (unlikely(!__pyx_t_2)) __PYX_ERR(21, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Bin2D_Dbn3D->tp_dict, __pyx_n_s_adjacentTo, __pyx_t_2) < 0) __PYX_ERR(21, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Bin2D_Dbn3D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_89__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__474)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11Bin2D_Dbn3D_91__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Bin2D_Dbn3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__475)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/ProfileBin2D.pyx":20
 * 
 *     #@property
 *     def mean(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().mean()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_3mean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__476)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 20, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_mean, __pyx_t_2) < 0) __PYX_ERR(22, 20, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":24
 * 
 *     #@property
 *     def stdDev(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdDev()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_5stdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_stdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__477)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_stdDev, __pyx_t_2) < 0) __PYX_ERR(22, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":28
 * 
 *     #@property
 *     def variance(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().variance()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_7variance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_variance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__478)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 28, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_variance, __pyx_t_2) < 0) __PYX_ERR(22, 28, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":32
 * 
 *     #@property
 *     def stdErr(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().stdErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_9stdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_stdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__479)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_stdErr, __pyx_t_2) < 0) __PYX_ERR(22, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":36
 * 
 *     #@property
 *     def rms(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().rms()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_11rms, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_rms, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__480)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_rms, __pyx_t_2) < 0) __PYX_ERR(22, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":40
 * 
 *     #@property
 *     def sumWZ(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_13sumWZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_sumWZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__481)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_sumWZ, __pyx_t_2) < 0) __PYX_ERR(22, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "include/ProfileBin2D.pyx":44
 * 
 *     #@property
 *     def sumWZ2(self):             # <<<<<<<<<<<<<<
 *         return self.pb2ptr().sumWZ2()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_15sumWZ2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D_sumWZ2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__482)); if (unlikely(!__pyx_t_2)) __PYX_ERR(22, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_ProfileBin2D->tp_dict, __pyx_n_s_sumWZ2, __pyx_t_2) < 0) __PYX_ERR(22, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_ProfileBin2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_23__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__483)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_12ProfileBin2D_25__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_ProfileBin2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__484)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/HistoBin2D.pyx":18
 * 
 *     #@property
 *     def volume(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volume()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_3volume, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D_volume, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__485)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D->tp_dict, __pyx_n_s_volume, __pyx_t_2) < 0) __PYX_ERR(23, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin2D);

  /* "include/HistoBin2D.pyx":22
 * 
 *     #@property
 *     def height(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().height()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_5height, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D_height, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__486)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D->tp_dict, __pyx_n_s_height, __pyx_t_2) < 0) __PYX_ERR(23, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin2D);

  /* "include/HistoBin2D.pyx":26
 * 
 *     #@property
 *     def volumeErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().volumeErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_7volumeErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D_volumeErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__487)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D->tp_dict, __pyx_n_s_volumeErr, __pyx_t_2) < 0) __PYX_ERR(23, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin2D);

  /* "include/HistoBin2D.pyx":30
 * 
 *     #@property
 *     def heightErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().heightErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_9heightErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D_heightErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__488)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D->tp_dict, __pyx_n_s_heightErr, __pyx_t_2) < 0) __PYX_ERR(23, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin2D);

  /* "include/HistoBin2D.pyx":34
 * 
 *     #@property
 *     def relErr(self):             # <<<<<<<<<<<<<<
 *         return self.hb2ptr().relErr()
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_11relErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D_relErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__489)); if (unlikely(!__pyx_t_2)) __PYX_ERR(23, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_HistoBin2D->tp_dict, __pyx_n_s_relErr, __pyx_t_2) < 0) __PYX_ERR(23, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_HistoBin2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_19__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__490)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_10HistoBin2D_21__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_HistoBin2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__491)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Histo2D.pyx":36
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Histo2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_3_Histo2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__492)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_Histo2D__init2, __pyx_t_2) < 0) __PYX_ERR(3, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":41
 *         cutil.set_owned_ptr(self, new c.Histo2D(<string>path, <string>title))
 * 
 *     def __init4(Histo2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_5_Histo2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__494)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 41, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_Histo2D__init4, __pyx_t_2) < 0) __PYX_ERR(3, 41, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":47
 *         cutil.set_owned_ptr(self, new c.Histo2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Histo2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_7_Histo2D__init8, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D___init8, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__496)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_Histo2D__init8, __pyx_t_2) < 0) __PYX_ERR(3, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":67
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_15reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__497)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(3, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":72
 *         self.h2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Histo2D.
 *         Clone this Profile2D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__498)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 72, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(3, 72, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":78
 * 
 * 
 *     def fill(self, double x, double y, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,[w]) -> None.
 *         Fill with given x,y values and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_19fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__499)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 78, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(3, 78, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":83
 *         self.h2ptr().fill(x, y, weight, fraction)
 * 
 *     def fillBin(self, size_t i, weight=1.0, fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,[w]) -> None.
 *         Fill bin i and optional weight."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_21fillBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_fillBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__501)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_fillBin, __pyx_t_2) < 0) __PYX_ERR(3, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":90
 * 
 *     #@property
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn2D
 *         The Dbn2D representing the total distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_23totalDbn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_totalDbn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__502)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_totalDbn, __pyx_t_2) < 0) __PYX_ERR(3, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":102
 * 
 * 
 *     def integral(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Histogram integral, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_25integral, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_integral, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__503)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 102, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_integral, __pyx_t_2) < 0) __PYX_ERR(3, 102, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":108
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_27numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__504)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 108, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(3, 108, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":113
 *         return self.h2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_29effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__505)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(3, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":118
 *         return self.h2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_31sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__506)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(3, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":123
 *         return self.h2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_33sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__507)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(3, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":129
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_35xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__508)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(3, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":134
 *         return self.h2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_37yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__509)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(3, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":139
 *         return self.h2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_39xyMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xyMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__510)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 139, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xyMean, __pyx_t_2) < 0) __PYX_ERR(3, 139, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":145
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_41xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__511)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(3, 145, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":150
 *         return self.h2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_43yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__512)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 150, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(3, 150, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":155
 *         return self.h2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_45xyVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xyVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__513)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xyVariance, __pyx_t_2) < 0) __PYX_ERR(3, 155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":161
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_47xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__514)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(3, 161, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":166
 *         return self.h2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_49yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__515)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(3, 166, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":171
 *         return self.h2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_51xyStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xyStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__516)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xyStdDev, __pyx_t_2) < 0) __PYX_ERR(3, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":177
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_53xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__517)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(3, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":182
 *         return self.h2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_55yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__518)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 182, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(3, 182, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":187
 *         return self.h2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_57xyStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xyStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__519)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xyStdErr, __pyx_t_2) < 0) __PYX_ERR(3, 187, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":193
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_59xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__520)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(3, 193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":198
 *         return self.h2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_61yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__521)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 198, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(3, 198, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":203
 *         return self.h2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_63xyRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xyRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__522)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 203, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xyRMS, __pyx_t_2) < 0) __PYX_ERR(3, 203, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":209
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_65scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__523)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(3, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":214
 *         self.h2ptr().scaleW(w)
 * 
 *     def normalize(self, double normto=1.0, bint includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """(float, bool) -> None.
 *         Normalize the histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_67normalize, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_normalize, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__524)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__252);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_normalize, __pyx_t_2) < 0) __PYX_ERR(3, 214, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":220
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.h2ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_69xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__525)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(3, 220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":224
 *         return self.h2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.h2ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_71xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__526)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 224, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(3, 224, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":228
 *         return self.h2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.h2ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_73yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__527)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 228, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(3, 228, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":232
 *         return self.h2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.h2ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_75yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__528)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(3, 232, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":237
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_77numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__529)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(3, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":242
 *         return self.h2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_79numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__530)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 242, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(3, 242, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":247
 *         return self.h2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_81numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__531)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(3, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":253
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_83bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__532)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(3, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":257
 *         return [self.bin(i) for i in range( self.h2ptr().numBins())]
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.h2ptr().numBins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_85bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__533)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(3, 257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":269
 *     #     return cutil.new_borrowed_cls(HistoBin2D, & self.h2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.h2ptr().binIndexAt(x, y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_87binIndexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_binIndexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__534)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 269, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_binIndexAt, __pyx_t_2) < 0) __PYX_ERR(3, 269, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":273
 *         return self.h2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_89binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__535)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(3, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":281
 * 
 * 
 *     def addBin(self, xlow, xhigh, ylow, yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.h2ptr().addBin(pair[double, double](xlow, xhigh),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_91addBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_addBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__537)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_addBin, __pyx_t_2) < 0) __PYX_ERR(3, 281, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":287
 *         return self
 * 
 *     def addBins(self, bins):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         cdef vector[c.HistoBin2D] cbins
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_93addBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_addBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__539)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_addBins, __pyx_t_2) < 0) __PYX_ERR(3, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":319
 * 
 * 
 *     def mkScatter(self, usefocus=False, binareadiv=True):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Histo2D to a Scatter3D, with optional argument to control the positions
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_95mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__541)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__542);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(3, 319, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":326
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Histo2D h, efficiency=False):             # <<<<<<<<<<<<<<
 *         """Histo2D -> Scatter3D
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_97divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__543)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 326, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(3, 326, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":371
 *     # TODO: add "useoverflows" optional args, move most into C++
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_111_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__544)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 371, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(3, 371, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":381
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.h2ptr().xEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_113xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__545)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 381, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(3, 381, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":385
 *         return self._mknp(self.h2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.h2ptr().xWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_115xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__546)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(3, 385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":389
 *         return self._mknp(self.h2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_117xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__547)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(3, 389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":393
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_119xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__548)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(3, 393, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":397
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_121xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__550)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 397, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(3, 397, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":407
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_123xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__552)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(3, 407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":417
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_125xMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__553)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xMids, __pyx_t_2) < 0) __PYX_ERR(3, 417, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":430
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_127xFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__555)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xFoci, __pyx_t_2) < 0) __PYX_ERR(3, 430, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":437
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_129xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__557)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(3, 437, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":441
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_131xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__560)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(3, 441, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":455
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.h2ptr().yEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_133yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__561)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 455, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(3, 455, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":459
 *         return self._mknp(self.h2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.h2ptr().yWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_135yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__562)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(3, 459, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":463
 *         return self._mknp(self.h2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_137yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__563)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 463, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(3, 463, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":467
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_139yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__564)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 467, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(3, 467, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":471
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_141yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__565)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 471, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(3, 471, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":481
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_143yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__566)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(3, 481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":491
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_145yMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__567)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yMids, __pyx_t_2) < 0) __PYX_ERR(3, 491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":505
 *     ## Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_147yFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__568)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yFoci, __pyx_t_2) < 0) __PYX_ERR(3, 505, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":512
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_149yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__569)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 512, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(3, 512, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":516
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_151yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__570)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(3, 516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":530
 *     ## Filling properties in general
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_153sumWs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_sumWs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__571)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 530, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_sumWs, __pyx_t_2) < 0) __PYX_ERR(3, 530, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":537
 *         return rtn
 * 
 *     def heights(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_155heights, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_heights, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__572)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_heights, __pyx_t_2) < 0) __PYX_ERR(3, 537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":544
 *         return rtn
 * 
 *     def volumes(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volumes of the histo."""
 *         rtn = self._mknp([b.volume() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_157volumes, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_volumes, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__573)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_volumes, __pyx_t_2) < 0) __PYX_ERR(3, 544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":551
 *         return rtn
 * 
 *     def zVals(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_159zVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__575)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zVals, __pyx_t_2) < 0) __PYX_ERR(3, 551, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":554
 *         return self.volumes(asgrid) if vol else self.heights(asgrid)
 * 
 *     def heightErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All height errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_161heightErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_heightErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__577)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 554, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_heightErrs, __pyx_t_2) < 0) __PYX_ERR(3, 554, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":564
 *         return rtn
 * 
 *     def volumeErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All volume errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_163volumeErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_volumeErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__578)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_volumeErrs, __pyx_t_2) < 0) __PYX_ERR(3, 564, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":578
 *         return rtn
 * 
 *     def relErrs(self, asymm=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All relative errors of the histo.
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_165relErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_relErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__579)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 578, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_relErrs, __pyx_t_2) < 0) __PYX_ERR(3, 578, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":588
 *         return rtn
 * 
 *     def zErrs(self, vol=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.volErrs(asgrid) if vol else self.heightErrs(asgrid)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_167zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__580)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zErrs, __pyx_t_2) < 0) __PYX_ERR(3, 588, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":592
 * 
 * 
 *     def zMins(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_169zMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__582)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 592, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zMins, __pyx_t_2) < 0) __PYX_ERR(3, 592, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":600
 *         return rtn
 * 
 *     def zMaxs(self, area=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals(area)
 *         es = self.zErrs(area)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_171zMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__583)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zMaxs, __pyx_t_2) < 0) __PYX_ERR(3, 600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":608
 *         return rtn
 * 
 *     def zMin(self, area=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(area))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_173zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__584)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(3, 608, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "include/Histo2D.pyx":612
 *         return min(self.zMins(area))
 * 
 *     def zMax(self, area=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(area))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_175zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__585)); if (unlikely(!__pyx_t_2)) __PYX_ERR(3, 612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Histo2D->tp_dict, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(3, 612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Histo2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_177__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__586)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Histo2D_179__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Histo2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__587)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Histo2D.pyx":618
 * 
 * ## Convenience alias
 * H2D = Histo2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_H2D, ((PyObject *)__pyx_ptype_4yoda_4core_Histo2D)) < 0) __PYX_ERR(3, 618, __pyx_L1_error)

  /* "include/Profile2D.pyx":38
 *         util.try_loop([self.__init2, self.__init4, self.__init8], *args, **kwargs)
 * 
 *     def __init2(Profile2D self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_3_Profile2D__init2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D___init2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__588)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_Profile2D__init2, __pyx_t_2) < 0) __PYX_ERR(24, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":43
 *         cutil.set_owned_ptr(self, new c.Profile2D(<string>path, <string>title))
 * 
 *     def __init4(Profile2D self, xedges,  yedges,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_5_Profile2D__init4, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D___init4, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__589)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_Profile2D__init4, __pyx_t_2) < 0) __PYX_ERR(24, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":49
 *         cutil.set_owned_ptr(self, new c.Profile2D(xedges, yedges, <string>path, <string>title))
 * 
 *     def __init8(Profile2D self, nxbins, xlow, xhigh,  nybins, ylow, yhigh,  path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_7_Profile2D__init8, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D___init8, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__590)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_Profile2D__init8, __pyx_t_2) < 0) __PYX_ERR(24, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":68
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         """None -> None.
 *         Reset the histogram but leave the bin structure."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_15reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__591)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_reset, __pyx_t_2) < 0) __PYX_ERR(24, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":73
 *         self.p2ptr().reset()
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """None -> Profile2D.
 *         Clone this Profile2D."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_17clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__592)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 73, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_clone, __pyx_t_2) < 0) __PYX_ERR(24, 73, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":79
 * 
 * 
 *     def fill(self, double x, double y, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(x,y,z,[w]) -> None.
 *         Fill with given x,y & z values and optional weight and fill fraction."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_19fill, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_fill, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__593)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_fill, __pyx_t_2) < 0) __PYX_ERR(24, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":84
 *         self.p2ptr().fill(x, y, z, weight, fraction)
 * 
 *     def fillBin(self, size_t i, double z, double weight=1.0, double fraction=1.0):             # <<<<<<<<<<<<<<
 *         """(i,z,[w]) -> None.
 *         Fill bin i with value z and optional weight and fill fraction."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_21fillBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_fillBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__595)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_fillBin, __pyx_t_2) < 0) __PYX_ERR(24, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":90
 * 
 * 
 *     def totalDbn(self):             # <<<<<<<<<<<<<<
 *         """() -> Dbn3D
 *         The Dbn3D representing the total distribution."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_23totalDbn, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_totalDbn, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__596)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_totalDbn, __pyx_t_2) < 0) __PYX_ERR(24, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":104
 * 
 * 
 *     def numEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Number of times this histogram was filled, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_25numEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_numEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__597)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 104, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_numEntries, __pyx_t_2) < 0) __PYX_ERR(24, 104, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":109
 *         return self.p2ptr().numEntries(includeoverflows)
 * 
 *     def effNumEntries(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Effective number of times this histogram was filled, computed from weights and optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_27effNumEntries, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_effNumEntries, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__598)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_effNumEntries, __pyx_t_2) < 0) __PYX_ERR(24, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":114
 *         return self.p2ptr().effNumEntries(includeoverflows)
 * 
 *     def sumW(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_29sumW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_sumW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__599)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_sumW, __pyx_t_2) < 0) __PYX_ERR(24, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":119
 *         return self.p2ptr().sumW(includeoverflows)
 * 
 *     def sumW2(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Sum of squared weights filled into this histogram."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_31sumW2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_sumW2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__600)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_sumW2, __pyx_t_2) < 0) __PYX_ERR(24, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":125
 * 
 * 
 *     def xMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_33xMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__601)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMean, __pyx_t_2) < 0) __PYX_ERR(24, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":130
 *         return self.p2ptr().xMean(includeoverflows)
 * 
 *     def yMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_35yMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__602)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 130, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMean, __pyx_t_2) < 0) __PYX_ERR(24, 130, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":135
 *         return self.p2ptr().yMean(includeoverflows)
 * 
 *     def xyMean(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_37xyMean, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xyMean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__603)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xyMean, __pyx_t_2) < 0) __PYX_ERR(24, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":141
 * 
 * 
 *     def xVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_39xVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__604)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xVariance, __pyx_t_2) < 0) __PYX_ERR(24, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":146
 *         return self.p2ptr().xVariance(includeoverflows)
 * 
 *     def yVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Variance in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_41yVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__605)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yVariance, __pyx_t_2) < 0) __PYX_ERR(24, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":151
 *         return self.p2ptr().yVariance(includeoverflows)
 * 
 *     def xyVariance(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Variances in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_43xyVariance, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xyVariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__606)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xyVariance, __pyx_t_2) < 0) __PYX_ERR(24, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":157
 * 
 * 
 *     def xStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_45xStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__607)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 157, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xStdDev, __pyx_t_2) < 0) __PYX_ERR(24, 157, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":162
 *         return self.p2ptr().xStdDev(includeoverflows)
 * 
 *     def yStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard deviation in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_47yStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__608)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 162, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yStdDev, __pyx_t_2) < 0) __PYX_ERR(24, 162, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":167
 *         return self.p2ptr().yStdDev(includeoverflows)
 * 
 *     def xyStdDev(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard deviations in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_49xyStdDev, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xyStdDev, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__609)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xyStdDev, __pyx_t_2) < 0) __PYX_ERR(24, 167, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":173
 * 
 * 
 *     def xStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_51xStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__610)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xStdErr, __pyx_t_2) < 0) __PYX_ERR(24, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":178
 *         return self.p2ptr().xStdErr(includeoverflows)
 * 
 *     def yStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         Standard error on the mean y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_53yStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__611)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yStdErr, __pyx_t_2) < 0) __PYX_ERR(24, 178, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":183
 *         return self.p2ptr().yStdErr(includeoverflows)
 * 
 *     def xyStdErr(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         Standard errors on the mean (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_55xyStdErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xyStdErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__612)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xyStdErr, __pyx_t_2) < 0) __PYX_ERR(24, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":189
 * 
 * 
 *     def xRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in x of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_57xRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__613)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xRMS, __pyx_t_2) < 0) __PYX_ERR(24, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":194
 *         return self.p2ptr().xRMS(includeoverflows)
 * 
 *     def yRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> float
 *         RMS in y of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_59yRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__614)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yRMS, __pyx_t_2) < 0) __PYX_ERR(24, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":199
 *         return self.p2ptr().yRMS(includeoverflows)
 * 
 *     def xyRMS(self, includeoverflows=True):             # <<<<<<<<<<<<<<
 *         """([bool]) -> (float,float)
 *         RMS in (x,y) of the histogram, optionally excluding the overflows."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_61xyRMS, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xyRMS, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__615)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__235);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xyRMS, __pyx_t_2) < 0) __PYX_ERR(24, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":206
 * 
 * 
 *     def scaleW(self, w):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Rescale the weights in this histogram by the factor w."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_63scaleW, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_scaleW, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__616)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_scaleW, __pyx_t_2) < 0) __PYX_ERR(24, 206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":211
 *         self.p2ptr().scaleW(w)
 * 
 *     def scaleZ(self, double f):             # <<<<<<<<<<<<<<
 *         """(float) -> None.
 *         Scale the z-direction (profiled value) in this histogram by the factor f."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_65scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__617)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 211, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_scaleZ, __pyx_t_2) < 0) __PYX_ERR(24, 211, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":217
 * 
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Low x edge of the histo."""
 *         return self.p2ptr().xMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_67xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__618)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(24, 217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":221
 *         return self.p2ptr().xMin()
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """High x edge of the histo."""
 *         return self.p2ptr().xMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_69xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__619)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(24, 221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":225
 *         return self.p2ptr().xMax()
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Low y edge of the histo."""
 *         return self.p2ptr().yMin()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_71yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__620)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(24, 225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":229
 *         return self.p2ptr().yMin()
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """High y edge of the histo."""
 *         return self.p2ptr().yMax()
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_73yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__621)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 229, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(24, 229, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":234
 * 
 * 
 *     def numBins(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (not including overflows)."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_75numBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_numBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__622)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_numBins, __pyx_t_2) < 0) __PYX_ERR(24, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":239
 *         return self.p2ptr().numBins()
 * 
 *     def numBinsX(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the x axis."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_77numBinsX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_numBinsX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__623)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_numBinsX, __pyx_t_2) < 0) __PYX_ERR(24, 239, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":244
 *         return self.p2ptr().numBinsX()
 * 
 *     def numBinsY(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of bins (edges) along the y axis."""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_79numBinsY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_numBinsY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__624)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_numBinsY, __pyx_t_2) < 0) __PYX_ERR(24, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":250
 * 
 * 
 *     def bins(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered bins list."""
 *         return list(self)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_81bins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_bins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__625)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_bins, __pyx_t_2) < 0) __PYX_ERR(24, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":254
 *         return list(self)
 * 
 *     def bin(self, i):             # <<<<<<<<<<<<<<
 *         """Get the i'th bin"""
 *         # cdef size_t ii = cutil.pythonic_index(i, self.p2ptr().numBins())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_83bin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_bin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__626)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 254, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_bin, __pyx_t_2) < 0) __PYX_ERR(24, 254, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":266
 *     #     return cutil.new_borrowed_cls(ProfileBin2D, & self.p2ptr().bin(i,j), self)
 * 
 *     def binIndexAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin index pair containing position (x,y)"""
 *         return self.p2ptr().binIndexAt(x, y)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_85binIndexAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_binIndexAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__627)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_binIndexAt, __pyx_t_2) < 0) __PYX_ERR(24, 266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":270
 *         return self.p2ptr().binIndexAt(x, y)
 * 
 *     def binAt(self, x, y):             # <<<<<<<<<<<<<<
 *         """Get the bin containing position (x,y)"""
 *         # TODO: what's the problem with this direct mapping? Produces compile error re. no default constructor...
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_87binAt, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_binAt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__628)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_binAt, __pyx_t_2) < 0) __PYX_ERR(24, 270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":278
 * 
 * 
 *     def addBin(self, double xlow, double xhigh, double ylow, double yhigh):             # <<<<<<<<<<<<<<
 *         """Add a bin."""
 *         self.p2ptr().addBin(pair[double, double](xlow, xhigh),
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_89addBin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_addBin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__629)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_addBin, __pyx_t_2) < 0) __PYX_ERR(24, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":284
 *         return self
 * 
 *     def addBins(self, xcuts, ycuts):             # <<<<<<<<<<<<<<
 *         """Add several bins."""
 *         # TODO: simplify / make consistent
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_91addBins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_addBins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__631)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_addBins, __pyx_t_2) < 0) __PYX_ERR(24, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":304
 * 
 * 
 *     def mkScatter(self, usefocus=False, usestddev=False):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Convert this Profile2D to a Scatter3D, with z representing
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_93mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__633)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_2) < 0) __PYX_ERR(24, 304, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":311
 *         return cutil.new_owned_cls(Scatter3D, s3.newclone())
 * 
 *     def divideBy(self, Profile2D h):             # <<<<<<<<<<<<<<
 *         cdef c.Scatter3D s = c.Profile2D_div_Profile2D(deref(self.p2ptr()), deref(h.p2ptr()))
 *         return cutil.new_owned_cls(Scatter3D, s.newclone())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_95divideBy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_divideBy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__634)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_divideBy, __pyx_t_2) < 0) __PYX_ERR(24, 311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":343
 *     #     return [b.sumW() for b in self.bins()]
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_109_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__635)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_mknp, __pyx_t_2) < 0) __PYX_ERR(24, 343, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":353
 *     ## Geometric properties in x
 * 
 *     def xEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique x edges of the histo."""
 *         return self._mknp(self.p2ptr().xEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_111xEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__636)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xEdges, __pyx_t_2) < 0) __PYX_ERR(24, 353, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":357
 *         return self._mknp(self.p2ptr().xEdges())
 * 
 *     def xWidths(self):             # <<<<<<<<<<<<<<
 *         """All x widths of the histo."""
 *         return self._mknp(self.p2ptr().xWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_113xWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__637)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xWidths, __pyx_t_2) < 0) __PYX_ERR(24, 357, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":361
 *         return self._mknp(self.p2ptr().xWidths())
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return self.xEdges()[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_115xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__638)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMin, __pyx_t_2) < 0) __PYX_ERR(24, 361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":365
 *         return self.xEdges()[0]
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return self.xEdges()[-1]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_117xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__639)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMax, __pyx_t_2) < 0) __PYX_ERR(24, 365, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":369
 *         return self.xEdges()[-1]
 * 
 *     def xMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x low edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_119xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__640)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMins, __pyx_t_2) < 0) __PYX_ERR(24, 369, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":379
 *         return rtn
 * 
 *     def xMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x high edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_121xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__641)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_2) < 0) __PYX_ERR(24, 379, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":389
 *         return rtn
 * 
 *     def xMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all x bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_123xMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__642)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 389, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xMids, __pyx_t_2) < 0) __PYX_ERR(24, 389, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":403
 *     ## Filling properties in x
 * 
 *     def xFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x bin foci of the histo."""
 *         rtn = self._mknp([b.xFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_125xFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__643)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xFoci, __pyx_t_2) < 0) __PYX_ERR(24, 403, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":410
 *         return rtn
 * 
 *     def xVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x values of the histo."""
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_127xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__644)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xVals, __pyx_t_2) < 0) __PYX_ERR(24, 410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":414
 *         return self.xFoci(asgrid) if foci else self.xMids(False, asgrid)
 * 
 *     def xErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All x errors of the histo."""
 *         # TODO: rewrite using xFoci/xMids/xMins/xMaxs
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_129xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__645)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 414, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_xErrs, __pyx_t_2) < 0) __PYX_ERR(24, 414, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":428
 *     ## Geometric properties in y
 * 
 *     def yEdges(self):             # <<<<<<<<<<<<<<
 *         """Unique y edges of the histo."""
 *         return self._mknp(self.p2ptr().yEdges())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_131yEdges, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yEdges, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__646)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yEdges, __pyx_t_2) < 0) __PYX_ERR(24, 428, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":432
 *         return self._mknp(self.p2ptr().yEdges())
 * 
 *     def yWidths(self):             # <<<<<<<<<<<<<<
 *         """All y widths of the histo."""
 *         return self._mknp(self.p2ptr().yWidths())
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_133yWidths, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yWidths, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__647)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yWidths, __pyx_t_2) < 0) __PYX_ERR(24, 432, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":436
 *         return self._mknp(self.p2ptr().yWidths())
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest y value."""
 *         return self.yEdges()[0]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_135yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__648)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 436, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMin, __pyx_t_2) < 0) __PYX_ERR(24, 436, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":440
 *         return self.yEdges()[0]
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return self.yEdges()[-1]
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_137yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__649)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 440, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMax, __pyx_t_2) < 0) __PYX_ERR(24, 440, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":444
 *         return self.yEdges()[-1]
 * 
 *     def yMins(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y low edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_139yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__650)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 444, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMins, __pyx_t_2) < 0) __PYX_ERR(24, 444, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":454
 *         return rtn
 * 
 *     def yMaxs(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y high edges of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_141yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__651)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_2) < 0) __PYX_ERR(24, 454, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":464
 *         return rtn
 * 
 *     def yMids(self, unique=True, asgrid=False):             # <<<<<<<<<<<<<<
 *         """Unique/all y bin midpoints of the histo."""
 *         if unique:
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_143yMids, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yMids, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__652)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 464, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__551);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yMids, __pyx_t_2) < 0) __PYX_ERR(24, 464, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":478
 *     # Filling properties in y
 * 
 *     def yFoci(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y bin foci of the histo."""
 *         rtn = self._mknp([b.yFocus() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_145yFoci, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yFoci, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__653)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yFoci, __pyx_t_2) < 0) __PYX_ERR(24, 478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":485
 *         return rtn
 * 
 *     def yVals(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y values of the histo."""
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_147yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__654)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 485, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yVals, __pyx_t_2) < 0) __PYX_ERR(24, 485, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":489
 *         return self.yFoci(asgrid) if foci else self.yMids(False, asgrid)
 * 
 *     def yErrs(self, foci=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y errors of the histo."""
 *         # TODO: rewrite using yFoci/yMids/yMins/yMaxs
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_149yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__655)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_yErrs, __pyx_t_2) < 0) __PYX_ERR(24, 489, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":500
 *         return rtn
 * 
 *     def sumWs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All sumW values of the histo."""
 *         rtn = self._mknp([b.sumW() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_151sumWs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_sumWs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__656)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_sumWs, __pyx_t_2) < 0) __PYX_ERR(24, 500, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":507
 *         return rtn
 * 
 *     def zMeans(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All y heights of the histo."""
 *         rtn = self._mknp([b.height() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_153zMeans, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zMeans, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__657)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zMeans, __pyx_t_2) < 0) __PYX_ERR(24, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":514
 *         return rtn
 * 
 *     def zVals(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zMeans(asgrid)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_155zVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__659)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zVals, __pyx_t_2) < 0) __PYX_ERR(24, 514, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":518
 * 
 * 
 *     def zStdErrs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard errors on the z means."""
 *         rtn = self._mknp([b.zStdErr() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_157zStdErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zStdErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__660)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zStdErrs, __pyx_t_2) < 0) __PYX_ERR(24, 518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":525
 *         return rtn
 * 
 *     def zStdDevs(self, asgrid=False):             # <<<<<<<<<<<<<<
 *         """All standard deviations on the z means."""
 *         rtn = self._mknp([b.zStdDev() for b in self.bins()])
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_159zStdDevs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zStdDevs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__661)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zStdDevs, __pyx_t_2) < 0) __PYX_ERR(24, 525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":532
 *         return rtn
 * 
 *     def zErrs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         return self.zStdDevs(asgrid) if sd else self.zStdErrs(asgrid)
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_161zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__663)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zErrs, __pyx_t_2) < 0) __PYX_ERR(24, 532, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":536
 * 
 * 
 *     def zMins(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_163zMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__665)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 536, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zMins, __pyx_t_2) < 0) __PYX_ERR(24, 536, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":544
 *         return rtn
 * 
 *     def zMaxs(self, sd=False, asgrid=False):             # <<<<<<<<<<<<<<
 *         zs = self.zVals()
 *         es = self.zErrs(sd)
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_165zMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__666)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 544, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__558);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zMaxs, __pyx_t_2) < 0) __PYX_ERR(24, 544, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":552
 *         return rtn
 * 
 *     def zMin(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins(sd))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_167zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__667)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 552, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zMin, __pyx_t_2) < 0) __PYX_ERR(24, 552, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "include/Profile2D.pyx":556
 *         return min(self.zMins(sd))
 * 
 *     def zMax(self, sd=False):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs(sd))
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_169zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__668)); if (unlikely(!__pyx_t_2)) __PYX_ERR(24, 556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Profile2D->tp_dict, __pyx_n_s_zMax, __pyx_t_2) < 0) __PYX_ERR(24, 556, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Profile2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_171__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__669)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Profile2D_173__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Profile2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__670)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/Profile2D.pyx":562
 * 
 * ## Convenience alias
 * P2D = Profile2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_P2D, ((PyObject *)__pyx_ptype_4yoda_4core_Profile2D)) < 0) __PYX_ERR(24, 562, __pyx_L1_error)

  /* "include/Point.pyx":25
 * 
 *     #@property
 *     def dim(self):             # <<<<<<<<<<<<<<
 *         """None -> int
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_3dim, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_dim, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__671)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_dim, __pyx_t_2) < 0) __PYX_ERR(25, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":32
 * 
 * 
 *     def val(self, i):             # <<<<<<<<<<<<<<
 *         """int -> float
 *         Value on axis i"""
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_5val, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_val, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__672)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 32, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_val, __pyx_t_2) < 0) __PYX_ERR(25, 32, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":37
 *         return self.pptr().val(i)
 * 
 *     def setVal(self, i, val):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_7setVal, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setVal, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__674)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 37, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_setVal, __pyx_t_2) < 0) __PYX_ERR(25, 37, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":44
 * 
 * 
 *     def errs(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_9errs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_errs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__676)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_errs, __pyx_t_2) < 0) __PYX_ERR(25, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":54
 *         return util.read_error_pair(self.pptr().errs(i,source))
 * 
 *     def setErr(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_11setErr, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__679)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 54, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_setErr, __pyx_t_2) < 0) __PYX_ERR(25, 54, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":64
 *         self.pptr().setErr(i, e, source)
 * 
 *     def setErrs(self, i, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float) -> None
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_13setErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__681)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_setErrs, __pyx_t_2) < 0) __PYX_ERR(25, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":101
 * 
 * 
 *     def errMinus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_15errMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_errMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__682)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_errMinus, __pyx_t_2) < 0) __PYX_ERR(25, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":113
 *         return self.pptr().errMinus(i ,source)
 * 
 *     def setErrMinus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_17setErrMinus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrMinus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__683)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_setErrMinus, __pyx_t_2) < 0) __PYX_ERR(25, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":126
 * 
 * 
 *     def errPlus(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int, string -> float
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_19errPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_errPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__684)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_errPlus, __pyx_t_2) < 0) __PYX_ERR(25, 126, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":138
 *         return self.pptr().errPlus(i, source)
 * 
 *     def setErrPlus(self, i, e, source=""):             # <<<<<<<<<<<<<<
 *         """(int, float, string) -> None
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_21setErrPlus, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_setErrPlus, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__685)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_setErrPlus, __pyx_t_2) < 0) __PYX_ERR(25, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":151
 * 
 * 
 *     def errAvg(self, i, source=""):             # <<<<<<<<<<<<<<
 *         """int -> float
 * 
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_23errAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_errAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__686)); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__677);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_errAvg, __pyx_t_2) < 0) __PYX_ERR(25, 151, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":164
 * 
 * 
 *     def set(self, i, val, *es, source=""):             # <<<<<<<<<<<<<<
 *         """
 *         (int, float, float) -> None
 */
  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(25, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_source, __pyx_kp_s__2) < 0) __PYX_ERR(25, 164, __pyx_L1_error)
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_25set, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_set, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__688)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsKwDict(__pyx_t_3, __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_set, __pyx_t_3) < 0) __PYX_ERR(25, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":189
 *         self.pptr().set(i, val, errs, source)
 * 
 *     def errMap(self):             # <<<<<<<<<<<<<<
 *         """None -> {string: [float,float]}
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_27errMap, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_errMap, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__690)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_errMap, __pyx_t_3) < 0) __PYX_ERR(25, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":199
 * 
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_29rmVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_rmVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__691)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_rmVariations, __pyx_t_3) < 0) __PYX_ERR(25, 199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "include/Point.pyx":207
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_31scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__693)); if (unlikely(!__pyx_t_3)) __PYX_ERR(25, 207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point->tp_dict, __pyx_n_s_scale, __pyx_t_3) < 0) __PYX_ERR(25, 207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_33__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__694)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Point_35__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__695)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point1D.pyx":18
 *         self.setXErrs(xerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point1D, new c.Point1D(deref(self.p1ptr())))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__696)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 18, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_copy, __pyx_t_3) < 0) __PYX_ERR(26, 18, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":24
 * 
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_5setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__698)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_setXErrs, __pyx_t_3) < 0) __PYX_ERR(26, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":55
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setXErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_7setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__700)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_setXErrs, __pyx_t_3) < 0) __PYX_ERR(26, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":80
 *     #         self.p1ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p1ptr().x()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_9x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__701)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_x, __pyx_t_3) < 0) __PYX_ERR(26, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":83
 *         """The x value"""
 *         return self.p1ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p1ptr().setX(x)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_11setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__702)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_setX, __pyx_t_3) < 0) __PYX_ERR(26, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":87
 *         self.p1ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_13xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__703)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_xErrs, __pyx_t_3) < 0) __PYX_ERR(26, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":91
 *         return util.read_error_pair(self.p1ptr().xErrs())
 * 
 *     def xErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_15xErrsFromSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrsFromSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__705)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 91, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_xErrsFromSource, __pyx_t_3) < 0) __PYX_ERR(26, 91, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":95
 *         return util.read_error_pair(self.p1ptr().xErrs(source))
 * 
 *     def setXErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *            (int, [float, float]) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_17setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__706)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_setXErrs, __pyx_t_3) < 0) __PYX_ERR(26, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":119
 *         self.pptr().setErrs(1, tuple(errs), source)
 * 
 *     def setYErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         if source is None:
 *             source = ""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_19setYErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_setYErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__707)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_setYErrs, __pyx_t_3) < 0) __PYX_ERR(26, 119, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":125
 * 
 *     #@property
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p1ptr().xMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_21xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__708)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(26, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":129
 *         return self.p1ptr().xMin()
 *     #@property
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p1ptr().xMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_23xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__709)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(26, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":133
 *         return self.p1ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p1ptr().xErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_25xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__710)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_xErrAvg, __pyx_t_3) < 0) __PYX_ERR(26, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "include/Point1D.pyx":137
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_27scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__711)); if (unlikely(!__pyx_t_3)) __PYX_ERR(26, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point1D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(26, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_33__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__712)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point1D_35__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__713)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point2D.pyx":19
 *         self.setYErrs(yerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point2D, new c.Point2D(deref(self.p2ptr())))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__714)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_copy, __pyx_t_3) < 0) __PYX_ERR(27, 19, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":33
 *     #    #return None
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p2ptr().x()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_5x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__715)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_x, __pyx_t_3) < 0) __PYX_ERR(27, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":36
 *         """The x value"""
 *         return self.p2ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p2ptr().setX(x)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_7setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__716)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_setX, __pyx_t_3) < 0) __PYX_ERR(27, 36, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":40
 *         self.p2ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p2ptr().xErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_9xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__717)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 40, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_xErrs, __pyx_t_3) < 0) __PYX_ERR(27, 40, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":44
 *         return util.read_error_pair(self.p2ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_11setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__719)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 44, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_setXErrs, __pyx_t_3) < 0) __PYX_ERR(27, 44, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":48
 *         self.p2ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_13xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__720)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(27, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":51
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p2ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p2ptr().xMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_15xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__721)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 51, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(27, 51, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":55
 *         return self.p2ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().xErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_17xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__722)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_xErrAvg, __pyx_t_3) < 0) __PYX_ERR(27, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":60
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p2ptr().y()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_19y, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_y, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__723)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_y, __pyx_t_3) < 0) __PYX_ERR(27, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":63
 *         """The y value"""
 *         return self.p2ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p2ptr().setY(y)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_21setY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__724)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 63, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_setY, __pyx_t_3) < 0) __PYX_ERR(27, 63, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":67
 *         self.p2ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The (total) y errors"""
 *         return util.read_error_pair(self.p2ptr().yErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_23yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__725)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_yErrs, __pyx_t_3) < 0) __PYX_ERR(27, 67, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":71
 *         return util.read_error_pair(self.p2ptr().yErrs())
 * 
 *     def yErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The y errors from a particular named source of uncertainty in the breakdown"""
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_25yErrsFromSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrsFromSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__726)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_yErrsFromSource, __pyx_t_3) < 0) __PYX_ERR(27, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":75
 *         return util.read_error_pair(self.p2ptr().yErrs(source))
 * 
 *     def setYErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_27setYErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_setYErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__727)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_setYErrs, __pyx_t_3) < 0) __PYX_ERR(27, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":106
 *         self.pptr().setErrs(2, tuple(errs), source)
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_29yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__728)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_yMin, __pyx_t_3) < 0) __PYX_ERR(27, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":109
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p2ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p2ptr().yMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_31yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__729)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 109, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_yMax, __pyx_t_3) < 0) __PYX_ERR(27, 109, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":113
 *         return self.p2ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p2ptr().yErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_33yErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_yErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__730)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 113, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_yErrAvg, __pyx_t_3) < 0) __PYX_ERR(27, 113, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":128
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_35scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__731)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 128, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(27, 128, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":133
 *         self.p2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_37scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__732)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_scaleY, __pyx_t_3) < 0) __PYX_ERR(27, 133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":138
 *         self.p2ptr().scaleY(a)
 * 
 *     def scaleXY(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_39scaleXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scaleXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__733)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_scaleXY, __pyx_t_3) < 0) __PYX_ERR(27, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "include/Point2D.pyx":146
 * 
 *     # TODO: remove
 *     def scale(self, x=1.0, y=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1, float=1) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_41scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__734)); if (unlikely(!__pyx_t_3)) __PYX_ERR(27, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point2D->tp_dict, __pyx_n_s_scale, __pyx_t_3) < 0) __PYX_ERR(27, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_47__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__735)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point2D_49__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__736)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Point3D.pyx":22
 *         self.setZErrs(zerrs, source)
 * 
 *     def copy(self):             # <<<<<<<<<<<<<<
 *         return cutil.new_owned_cls(Point3D, new c.Point3D(deref(self.p3ptr())))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_3copy, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_copy, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__737)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 22, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_copy, __pyx_t_3) < 0) __PYX_ERR(28, 22, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":27
 * 
 * 
 *     def x(self):             # <<<<<<<<<<<<<<
 *         """The x value"""
 *         return self.p3ptr().x()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_5x, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_x, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__738)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_x, __pyx_t_3) < 0) __PYX_ERR(28, 27, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":30
 *         """The x value"""
 *         return self.p3ptr().x()
 *     def setX(self, x):             # <<<<<<<<<<<<<<
 *         """Set the x value"""
 *         self.p3ptr().setX(x)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_7setX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__739)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setX, __pyx_t_3) < 0) __PYX_ERR(28, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":34
 *         self.p3ptr().setX(x)
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """The x errors"""
 *         return util.read_error_pair(self.p3ptr().xErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_9xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__740)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_xErrs, __pyx_t_3) < 0) __PYX_ERR(28, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":38
 *         return util.read_error_pair(self.p3ptr().xErrs())
 * 
 *     def setXErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the x errors"""
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_11setXErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setXErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__741)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setXErrs, __pyx_t_3) < 0) __PYX_ERR(28, 38, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":42
 *         self.p3ptr().setXErrs(util.read_symmetric(val))
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_13xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__742)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(28, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":45
 *         """The minimum x position, i.e. lowest error"""
 *         return self.p3ptr().xMin()
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum x position, i.e. highest error"""
 *         return self.p3ptr().xMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_15xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__743)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 45, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(28, 45, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":49
 *         return self.p3ptr().xMax()
 * 
 *     def xErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().xErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_17xErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_xErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__744)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 49, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_xErrAvg, __pyx_t_3) < 0) __PYX_ERR(28, 49, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":53
 * 
 * 
 *     def y(self):             # <<<<<<<<<<<<<<
 *         """The y value"""
 *         return self.p3ptr().y()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_19y, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_y, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__745)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_y, __pyx_t_3) < 0) __PYX_ERR(28, 53, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":56
 *         """The y value"""
 *         return self.p3ptr().y()
 *     def setY(self, y):             # <<<<<<<<<<<<<<
 *         """Set the y value"""
 *         self.p3ptr().setY(y)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_21setY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__746)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setY, __pyx_t_3) < 0) __PYX_ERR(28, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":60
 *         self.p3ptr().setY(y)
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """The y errors"""
 *         return util.read_error_pair(self.p3ptr().yErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_23yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__747)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_yErrs, __pyx_t_3) < 0) __PYX_ERR(28, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":64
 *         return util.read_error_pair(self.p3ptr().yErrs())
 * 
 *     def setYErrs(self, val):             # <<<<<<<<<<<<<<
 *         """Set the y errors"""
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_25setYErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setYErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__748)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 64, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setYErrs, __pyx_t_3) < 0) __PYX_ERR(28, 64, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":68
 *         self.p3ptr().setYErrs(util.read_symmetric(val))
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_27yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__749)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 68, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_yMin, __pyx_t_3) < 0) __PYX_ERR(28, 68, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":71
 *         """The minimum y position, i.e. lowest error"""
 *         return self.p3ptr().yMin()
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum y position, i.e. highest error"""
 *         return self.p3ptr().yMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_29yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__750)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 71, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_yMax, __pyx_t_3) < 0) __PYX_ERR(28, 71, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":75
 *         return self.p3ptr().yMax()
 * 
 *     def yErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().yErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_31yErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_yErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__751)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 75, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_yErrAvg, __pyx_t_3) < 0) __PYX_ERR(28, 75, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":79
 * 
 * 
 *     def z(self):             # <<<<<<<<<<<<<<
 *         """The z value"""
 *         return self.p3ptr().z()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_33z, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_z, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__752)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 79, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_z, __pyx_t_3) < 0) __PYX_ERR(28, 79, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":82
 *         """The z value"""
 *         return self.p3ptr().z()
 *     def setZ(self, z):             # <<<<<<<<<<<<<<
 *         """Set the z value"""
 *         self.p3ptr().setZ(z)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_35setZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__753)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 82, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setZ, __pyx_t_3) < 0) __PYX_ERR(28, 82, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":86
 *         self.p3ptr().setZ(z)
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_37zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__754)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_zErrs, __pyx_t_3) < 0) __PYX_ERR(28, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":90
 *         return util.read_error_pair(self.p3ptr().zErrs())
 * 
 *     def zErrsFromSource(self, source):             # <<<<<<<<<<<<<<
 *         """The z errors"""
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_39zErrsFromSource, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrsFromSource, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__755)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 90, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_zErrsFromSource, __pyx_t_3) < 0) __PYX_ERR(28, 90, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":94
 *         return util.read_error_pair(self.p3ptr().zErrs(source))
 * 
 *     def setZErrs(self, *es):             # <<<<<<<<<<<<<<
 *         """
 *         (float,) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_41setZErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setZErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__756)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setZErrs, __pyx_t_3) < 0) __PYX_ERR(28, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":125
 *         self.pptr().setErrs(3, tuple(errs), source)
 * 
 *     def setZErrs(self, val, source):             # <<<<<<<<<<<<<<
 *         """(float, string) -> None
 *         Set symmetric errors on z-axis with an optional string argument to
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_43setZErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_setZErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__757)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 125, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_setZErrs, __pyx_t_3) < 0) __PYX_ERR(28, 125, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":134
 *         self.p3ptr().setZErrs(util.read_symmetric(val), source)
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_45zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__758)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_zMin, __pyx_t_3) < 0) __PYX_ERR(28, 134, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":137
 *         """The minimum z position, i.e. lowest error"""
 *         return self.p3ptr().zMin()
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """The maximum z position, i.e. highest error"""
 *         return self.p3ptr().zMax()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_47zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__759)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_zMax, __pyx_t_3) < 0) __PYX_ERR(28, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":141
 *         return self.p3ptr().zMax()
 * 
 *     def zErrAvg(self):             # <<<<<<<<<<<<<<
 *         return self.p3ptr().zErrAvg()
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_49zErrAvg, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_zErrAvg, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__760)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 141, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_zErrAvg, __pyx_t_3) < 0) __PYX_ERR(28, 141, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":179
 * 
 * 
 *     def scaleX(self, ax):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_51scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__762)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 179, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(28, 179, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":186
 *         self.p3ptr().scaleX(ax)
 * 
 *     def scaleY(self, ay):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_53scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__764)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_scaleY, __pyx_t_3) < 0) __PYX_ERR(28, 186, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":193
 *         self.p3ptr().scaleY(ay)
 * 
 *     def scaleZ(self, az):             # <<<<<<<<<<<<<<
 *         """
 *         (float) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_55scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__766)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_scaleZ, __pyx_t_3) < 0) __PYX_ERR(28, 193, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":200
 *         self.p3ptr().scaleZ(az)
 * 
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (float=1.0, float=1.0, float=1.0) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_57scaleXYZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleXYZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__768)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__769);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_scaleXYZ, __pyx_t_3) < 0) __PYX_ERR(28, 200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "include/Point3D.pyx":208
 * 
 *     # TODO: remove
 *     def scaleXYZ(self, ax=1.0, ay=1.0, az=1.0):             # <<<<<<<<<<<<<<
 *         """
 *         (double=1.0, double=1.0, double=1.0) -> None
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_59scaleXYZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D_scaleXYZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__770)); if (unlikely(!__pyx_t_3)) __PYX_ERR(28, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__769);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Point3D->tp_dict, __pyx_n_s_scaleXYZ, __pyx_t_3) < 0) __PYX_ERR(28, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Point3D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_65__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__771)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_7Point3D_67__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Point3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__772)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Scatter1D.pyx":25
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_3_Scatter1D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__773)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 25, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_Scatter1D__init_2, __pyx_t_3) < 0) __PYX_ERR(4, 25, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":30
 *         cutil.set_owned_ptr(self, new c.Scatter1D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_5_Scatter1D__init_3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___init_3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__775)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 30, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_Scatter1D__init_3, __pyx_t_3) < 0) __PYX_ERR(4, 30, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":34
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter1D.
 *         Clone this Scatter1D."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_7clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__776)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 34, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_clone, __pyx_t_3) < 0) __PYX_ERR(4, 34, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":43
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s1ptr().reset()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_11reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__777)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 43, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_reset, __pyx_t_3) < 0) __PYX_ERR(4, 43, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":48
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_13numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__778)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 48, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_numPoints, __pyx_t_3) < 0) __PYX_ERR(4, 48, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":57
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_17points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__779)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 57, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_points, __pyx_t_3) < 0) __PYX_ERR(4, 57, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":61
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point1D, &self.s1ptr().point(i), self)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_19point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__780)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 61, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_point, __pyx_t_3) < 0) __PYX_ERR(4, 61, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":70
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_23addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__782)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 70, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_addPoint, __pyx_t_3) < 0) __PYX_ERR(4, 70, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":81
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, xerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_25_Scatter1D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__784)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 81, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__785);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_Scatter1D__addPoint_explicit, __pyx_t_3) < 0) __PYX_ERR(4, 81, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":84
 *         self.__addPoint_point(Point1D(x, xerrs))
 * 
 *     def __addPoint_point(self, Point1D p):             # <<<<<<<<<<<<<<
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_27_Scatter1D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__787)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 84, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_Scatter1D__addPoint_point, __pyx_t_3) < 0) __PYX_ERR(4, 84, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":87
 *         self.s1ptr().addPoint(p.p1ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_29addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__789)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 87, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_addPoints, __pyx_t_3) < 0) __PYX_ERR(4, 87, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":95
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoint(idx)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_31rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__791)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 95, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_rmPoint, __pyx_t_3) < 0) __PYX_ERR(4, 95, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":98
 *         self.s1ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s1ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_33rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__793)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 98, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_rmPoints, __pyx_t_3) < 0) __PYX_ERR(4, 98, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":101
 *         self.s1ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter1Ds into this one."""
 *         cdef Scatter1D other
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_35combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__795)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_combineWith, __pyx_t_3) < 0) __PYX_ERR(4, 101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":115
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter1D.
 *         Make a new Scatter1D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_37mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__797)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 115, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_3) < 0) __PYX_ERR(4, 115, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":123
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_39scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__798)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 123, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(4, 123, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":129
 * 
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_41scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__799)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_scale, __pyx_t_3) < 0) __PYX_ERR(4, 129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":135
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_43transformX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_transformX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__801)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_transformX, __pyx_t_3) < 0) __PYX_ERR(4, 135, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":146
 *         c.Scatter1D_transformX(deref(self.s1ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_45parseVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_parseVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__802)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 146, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_parseVariations, __pyx_t_3) < 0) __PYX_ERR(4, 146, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":152
 *         return self.s1ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_47updateTotalUncertainty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_updateTotalUncertainty, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__803)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 152, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_updateTotalUncertainty, __pyx_t_3) < 0) __PYX_ERR(4, 152, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":158
 *         return self.s1ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_49writeVariationsToAnnotations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_writeVariationsToAnnot, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__804)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 158, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_writeVariationsToAnnotations, __pyx_t_3) < 0) __PYX_ERR(4, 158, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":164
 *         return self.s1ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_51variations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_variations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__806)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_variations, __pyx_t_3) < 0) __PYX_ERR(4, 164, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":170
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_53rmVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_rmVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__807)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_rmVariations, __pyx_t_3) < 0) __PYX_ERR(4, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":175
 *         return self.s1ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_55hasValidErrorBreakdown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_hasValidErrorBreakdown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__809)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 175, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_hasValidErrorBreakdown, __pyx_t_3) < 0) __PYX_ERR(4, 175, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":202
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_57_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__810)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_mknp, __pyx_t_3) < 0) __PYX_ERR(4, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":209
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_59xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__811)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_xVals, __pyx_t_3) < 0) __PYX_ERR(4, 209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":212
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_61xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__812)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_xMins, __pyx_t_3) < 0) __PYX_ERR(4, 212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":216
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_63xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__813)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_3) < 0) __PYX_ERR(4, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":222
 *     # TODO: xErrs
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_65xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__814)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(4, 222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "include/Scatter1D.pyx":226
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_67xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__815)); if (unlikely(!__pyx_t_3)) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(4, 226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter1D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_69__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__816)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter1D_71__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter1D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__817)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Scatter1D.pyx":232
 * 
 * ## Convenience alias
 * S1D = Scatter1D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S1D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter1D)) < 0) __PYX_ERR(4, 232, __pyx_L1_error)

  /* "include/Scatter2D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_3_Scatter2D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__818)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_Scatter2D__init_2, __pyx_t_3) < 0) __PYX_ERR(29, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter2D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, path="", title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_5_Scatter2D__init_3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___init_3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__819)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_Scatter2D__init_3, __pyx_t_3) < 0) __PYX_ERR(29, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter2D.
 *         Clone this Scatter2D."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_7clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__820)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_clone, __pyx_t_3) < 0) __PYX_ERR(29, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s2ptr().reset()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_11reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__821)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_reset, __pyx_t_3) < 0) __PYX_ERR(29, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_13numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__822)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_numPoints, __pyx_t_3) < 0) __PYX_ERR(29, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_17points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__823)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_points, __pyx_t_3) < 0) __PYX_ERR(29, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point2D, &self.s2ptr().point(i), self)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_19point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__824)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_point, __pyx_t_3) < 0) __PYX_ERR(29, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_23addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__825)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_addPoint, __pyx_t_3) < 0) __PYX_ERR(29, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, xerrs=0, yerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_25_Scatter2D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__827)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__828);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_Scatter2D__addPoint_explicit, __pyx_t_3) < 0) __PYX_ERR(29, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":83
 *         self.__addPoint_point(Point2D(x, y, xerrs, yerrs))
 * 
 *     def __addPoint_point(self, Point2D p):             # <<<<<<<<<<<<<<
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_27_Scatter2D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__829)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_Scatter2D__addPoint_point, __pyx_t_3) < 0) __PYX_ERR(29, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":86
 *         self.s2ptr().addPoint(p.p2ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_29addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__830)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_addPoints, __pyx_t_3) < 0) __PYX_ERR(29, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoint(idx)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_31rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__831)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_rmPoint, __pyx_t_3) < 0) __PYX_ERR(29, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":97
 *         self.s2ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s2ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_33rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__832)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_rmPoints, __pyx_t_3) < 0) __PYX_ERR(29, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":100
 *         self.s2ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter2Ds into this one."""
 *         cdef Scatter2D other
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_35combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__833)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_combineWith, __pyx_t_3) < 0) __PYX_ERR(29, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter2D.
 *         Make a new Scatter2D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_37mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__834)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_3) < 0) __PYX_ERR(29, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_39scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__835)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(29, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":127
 *         self.s2ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_41scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__836)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_scaleY, __pyx_t_3) < 0) __PYX_ERR(29, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":132
 *         self.s2ptr().scaleY(a)
 * 
 *     def scaleXY(self, ax=1.0, ay=1.0):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_43scaleXY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scaleXY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__838)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__23);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_scaleXY, __pyx_t_3) < 0) __PYX_ERR(29, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":137
 *         self.s2ptr().scaleXY(ax, ay)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_45scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__839)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_scale, __pyx_t_3) < 0) __PYX_ERR(29, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":143
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_47transformX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_transformX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__840)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_transformX, __pyx_t_3) < 0) __PYX_ERR(29, 143, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":154
 *         c.Scatter2D_transformX(deref(self.s2ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_49transformY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_transformY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__841)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 154, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_transformY, __pyx_t_3) < 0) __PYX_ERR(29, 154, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":165
 *         c.Scatter2D_transformY(deref(self.s2ptr()), fptr)
 * 
 *     def parseVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the YAML which contains the variations stored in the points of the Scatter.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_51parseVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_parseVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__842)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_parseVariations, __pyx_t_3) < 0) __PYX_ERR(29, 165, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":171
 *         return self.s2ptr().parseVariations()
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_53updateTotalUncertainty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_updateTotalUncertainty, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__843)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 171, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_updateTotalUncertainty, __pyx_t_3) < 0) __PYX_ERR(29, 171, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":177
 *         return self.s2ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_55writeVariationsToAnnotations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_writeVariationsToAnnot, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__844)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_writeVariationsToAnnotations, __pyx_t_3) < 0) __PYX_ERR(29, 177, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":183
 *         return self.s2ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_57variations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_variations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__845)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_variations, __pyx_t_3) < 0) __PYX_ERR(29, 183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":189
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_59rmVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_rmVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__846)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 189, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_rmVariations, __pyx_t_3) < 0) __PYX_ERR(29, 189, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":194
 *         return self.s2ptr().rmVariations()
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_61_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__847)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_mknp, __pyx_t_3) < 0) __PYX_ERR(29, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":202
 * 
 * 
 *     def covarianceMatrix(self, ignoreOffDiagonalTerms=False):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_63covarianceMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_covarianceMatrix, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__849)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__133);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_covarianceMatrix, __pyx_t_3) < 0) __PYX_ERR(29, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":215
 *     #     return cutil.new_owned_cls(Scatter2D, c.Scatter2D_sub_Scatter2D(self.s2ptr(), other.s2ptr()))
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_65hasValidErrorBreakdown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_hasValidErrorBreakdown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__850)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 215, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_hasValidErrorBreakdown, __pyx_t_3) < 0) __PYX_ERR(29, 215, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":234
 * 
 * 
 *     def correlationMatrix(self):             # <<<<<<<<<<<<<<
 *         """
 *         `covMatrix` numpy matrix
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_67correlationMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_correlationMatrix, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__852)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_correlationMatrix, __pyx_t_3) < 0) __PYX_ERR(29, 234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":250
 * 
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_69xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__853)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 250, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xVals, __pyx_t_3) < 0) __PYX_ERR(29, 250, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":253
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_71xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__854)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 253, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xMins, __pyx_t_3) < 0) __PYX_ERR(29, 253, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":258
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_73xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__855)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_3) < 0) __PYX_ERR(29, 258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":263
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_75xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__856)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xErrs, __pyx_t_3) < 0) __PYX_ERR(29, 263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":268
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All x average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_77xErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__857)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xErrAvgs, __pyx_t_3) < 0) __PYX_ERR(29, 268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":273
 *         return self._mknp([p.xErrAvg() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_79xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__858)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 273, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(29, 273, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":278
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_81xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__859)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(29, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":284
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_83yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__860)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yVals, __pyx_t_3) < 0) __PYX_ERR(29, 284, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":287
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All y low values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_85yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__861)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yMins, __pyx_t_3) < 0) __PYX_ERR(29, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":292
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All y high values."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_87yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__862)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_3) < 0) __PYX_ERR(29, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":297
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y error pairs"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_89yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__863)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 297, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yErrs, __pyx_t_3) < 0) __PYX_ERR(29, 297, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":302
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yErrAvgs(self):             # <<<<<<<<<<<<<<
 *         """All y average errors"""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_91yErrAvgs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yErrAvgs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__864)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 302, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yErrAvgs, __pyx_t_3) < 0) __PYX_ERR(29, 302, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":307
 *         return self._mknp([p.yErrAvg() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_93yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__865)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yMin, __pyx_t_3) < 0) __PYX_ERR(29, 307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "include/Scatter2D.pyx":312
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         # TODO: add extra dimensionality for multiple errors?
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_95yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__866)); if (unlikely(!__pyx_t_3)) __PYX_ERR(29, 312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D->tp_dict, __pyx_n_s_yMax, __pyx_t_3) < 0) __PYX_ERR(29, 312, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter2D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_97__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__867)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter2D_99__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter2D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__868)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Scatter2D.pyx":319
 * 
 * ## Convenience alias
 * S2D = Scatter2D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S2D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter2D)) < 0) __PYX_ERR(29, 319, __pyx_L1_error)

  /* "include/Scatter3D.pyx":24
 *         util.try_loop([self.__init_2, self.__init_3], *args, **kwargs)
 * 
 *     def __init_2(self, path="", title=""):             # <<<<<<<<<<<<<<
 *         path  = path
 *         title = title
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_3_Scatter3D__init_2, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___init_2, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__869)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 24, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__220);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_Scatter3D__init_2, __pyx_t_3) < 0) __PYX_ERR(30, 24, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":29
 *         cutil.set_owned_ptr(self, new c.Scatter3D(<string>path, <string>title))
 * 
 *     def __init_3(self, points, char* path="", char* title=""):             # <<<<<<<<<<<<<<
 *         self.__init_2(path, title)
 *         self.addPoints(points)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_5_Scatter3D__init_3, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___init_3, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__870)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 29, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__871);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_Scatter3D__init_3, __pyx_t_3) < 0) __PYX_ERR(30, 29, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":33
 *         self.addPoints(points)
 * 
 *     def clone(self):             # <<<<<<<<<<<<<<
 *         """() -> Scatter3D.
 *         Clone this Scatter3D."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_7clone, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_clone, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__872)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 33, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_clone, __pyx_t_3) < 0) __PYX_ERR(30, 33, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":42
 * 
 * 
 *     def reset(self):             # <<<<<<<<<<<<<<
 *         "Reset the scatter, removing all points"
 *         self.s3ptr().reset()
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_11reset, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_reset, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__873)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_reset, __pyx_t_3) < 0) __PYX_ERR(30, 42, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":47
 * 
 * 
 *     def numPoints(self):             # <<<<<<<<<<<<<<
 *         """() -> int
 *         Number of points in this scatter."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_13numPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_numPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__874)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_numPoints, __pyx_t_3) < 0) __PYX_ERR(30, 47, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":56
 * 
 * 
 *     def points(self):             # <<<<<<<<<<<<<<
 *         """Access the ordered list of points."""
 *         return [self.point(i) for i in range(self.numPoints())]
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_17points, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_points, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__875)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 56, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_points, __pyx_t_3) < 0) __PYX_ERR(30, 56, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":60
 *         return [self.point(i) for i in range(self.numPoints())]
 * 
 *     def point(self, size_t i):             # <<<<<<<<<<<<<<
 *         """Access the i'th point."""
 *         return cutil.new_borrowed_cls(Point3D, &self.s3ptr().point(i), self)
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_19point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__876)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 60, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_point, __pyx_t_3) < 0) __PYX_ERR(30, 60, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":69
 * 
 * 
 *     def addPoint(self, *args, **kwargs):             # <<<<<<<<<<<<<<
 *         """Add a new point.
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_23addPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_addPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__877)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_addPoint, __pyx_t_3) < 0) __PYX_ERR(30, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":80
 *             self.__addPoint_explicit(*args, **kwargs)
 * 
 *     def __addPoint_explicit(self, x, y, z, xerrs=0, yerrs=0, zerrs=0):             # <<<<<<<<<<<<<<
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_25_Scatter3D__addPoint_explicit, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___addPoint_explicit, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__879)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 80, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__880);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_Scatter3D__addPoint_explicit, __pyx_t_3) < 0) __PYX_ERR(30, 80, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":83
 *         self.__addPoint_point(Point3D(x, y, z, xerrs, yerrs, zerrs))
 * 
 *     def __addPoint_point(self, Point3D p):             # <<<<<<<<<<<<<<
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_27_Scatter3D__addPoint_point, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___addPoint_point, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__881)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 83, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_Scatter3D__addPoint_point, __pyx_t_3) < 0) __PYX_ERR(30, 83, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":86
 *         self.s3ptr().addPoint(p.p3ptr()[0])
 * 
 *     def addPoints(self, iterable):             # <<<<<<<<<<<<<<
 *         """Add several new points."""
 *         for row in iterable:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_29addPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_addPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__882)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_addPoints, __pyx_t_3) < 0) __PYX_ERR(30, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":94
 *             self.addPoint(row)
 * 
 *     def rmPoint(self, idx):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoint(idx)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_31rmPoint, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_rmPoint, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__883)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 94, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_rmPoint, __pyx_t_3) < 0) __PYX_ERR(30, 94, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":97
 *         self.s3ptr().rmPoint(idx)
 * 
 *     def rmPoints(self, idxs):             # <<<<<<<<<<<<<<
 *         self.s3ptr().rmPoints(idxs)
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_33rmPoints, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_rmPoints, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__884)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 97, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_rmPoints, __pyx_t_3) < 0) __PYX_ERR(30, 97, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":100
 *         self.s3ptr().rmPoints(idxs)
 * 
 *     def combineWith(self, others):             # <<<<<<<<<<<<<<
 *         """Try to add points from other Scatter3Ds into this one."""
 *         cdef Scatter3D other
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_35combineWith, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_combineWith, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__885)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_combineWith, __pyx_t_3) < 0) __PYX_ERR(30, 100, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":114
 * 
 * 
 *     def mkScatter(self):             # <<<<<<<<<<<<<<
 *         """None -> Scatter3D.
 *         Make a new Scatter3D. Exists to allow mkScatter calls on any AnalysisObject,
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_37mkScatter, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__887)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_mkScatter, __pyx_t_3) < 0) __PYX_ERR(30, 114, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":122
 * 
 * 
 *     def scaleX(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the x values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_39scaleX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__888)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 122, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_scaleX, __pyx_t_3) < 0) __PYX_ERR(30, 122, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":127
 *         self.s3ptr().scaleX(a)
 * 
 *     def scaleY(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the y values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_41scaleY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__889)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_scaleY, __pyx_t_3) < 0) __PYX_ERR(30, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":132
 *         self.s3ptr().scaleY(a)
 * 
 *     def scaleZ(self, a):             # <<<<<<<<<<<<<<
 *         """(float) -> None
 *         Scale the z values and errors of the points in this scatter by factor a."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_43scaleZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__890)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 132, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_scaleZ, __pyx_t_3) < 0) __PYX_ERR(30, 132, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":137
 *         self.s3ptr().scaleZ(a)
 * 
 *     def scaleXYZ(self, ax=1, ay=1, az=1):             # <<<<<<<<<<<<<<
 *         """(float=1, float=1, float=1) -> None
 *         Scale the values and errors of the points in this scatter by factors ax, ay, az."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_45scaleXYZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scaleXYZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__891)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 137, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__892);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_scaleXYZ, __pyx_t_3) < 0) __PYX_ERR(30, 137, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":142
 *         self.s3ptr().scaleXYZ(ax, ay, az)
 * 
 *     def scale(self, i, scale):             # <<<<<<<<<<<<<<
 *         """(int, float) -> None
 *         Scale values on axis i"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_47scale, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_scale, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__893)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 142, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_scale, __pyx_t_3) < 0) __PYX_ERR(30, 142, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":148
 * 
 * 
 *     def transformX(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the x values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_49transformX, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_transformX, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__894)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_transformX, __pyx_t_3) < 0) __PYX_ERR(30, 148, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":159
 *         c.Scatter3D_transformX(deref(self.s3ptr()), fptr)
 * 
 *     def transformY(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the y values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_51transformY, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_transformY, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__895)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_transformY, __pyx_t_3) < 0) __PYX_ERR(30, 159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":170
 *         c.Scatter3D_transformY(deref(self.s3ptr()), fptr)
 * 
 *     def transformZ(self, f):             # <<<<<<<<<<<<<<
 *         """(fn) -> None
 *         Transform the z values and errors of the points in this scatter by function f."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_53transformZ, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_transformZ, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__896)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 170, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_transformZ, __pyx_t_3) < 0) __PYX_ERR(30, 170, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":190
 *     #     return cutil.new_owned_cls(Scatter3D, c.Scatter3D_sub_Scatter3D(self.s3ptr(), other.s3ptr()))
 * 
 *     def updateTotalUncertainty(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Sum the error in the error map in quadrature and update the total ("") uncertainty.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_55updateTotalUncertainty, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_updateTotalUncertainty, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__897)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_updateTotalUncertainty, __pyx_t_3) < 0) __PYX_ERR(30, 190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":196
 *         return self.s3ptr().updateTotalUncertainty()
 * 
 *     def writeVariationsToAnnotations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Parse the variations and add them to the annotations.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_57writeVariationsToAnnotations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_writeVariationsToAnnot, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__898)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 196, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_writeVariationsToAnnotations, __pyx_t_3) < 0) __PYX_ERR(30, 196, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":202
 *         return self.s3ptr().writeVariationsToAnnotations()
 * 
 *     def variations(self):             # <<<<<<<<<<<<<<
 *         """None -> vector[string]
 *         Get the list of variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_59variations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_variations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__899)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 202, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_variations, __pyx_t_3) < 0) __PYX_ERR(30, 202, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":208
 *         return [var for var in vars]
 * 
 *     def rmVariations(self):             # <<<<<<<<<<<<<<
 *         """None -> None
 *         Remove the variations stored in the points of the Scatter"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_61rmVariations, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_rmVariations, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__900)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_rmVariations, __pyx_t_3) < 0) __PYX_ERR(30, 208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":213
 *         return self.s3ptr().rmVariations()
 * 
 *     def hasValidErrorBreakdown(self):             # <<<<<<<<<<<<<<
 *         """
 *         Check if the AO's error breakdown is not empty and has no bins with 0 uncertainty
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_63hasValidErrorBreakdown, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_hasValidErrorBreakdown, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__901)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_hasValidErrorBreakdown, __pyx_t_3) < 0) __PYX_ERR(30, 213, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":231
 *         return True
 * 
 *     def covarianceMatrix(self, *ignoreOffDiagonalTerms):             # <<<<<<<<<<<<<<
 *         """bool -> vector[vector[float]]
 *         Construct the covariance matrix"""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_65covarianceMatrix, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_covarianceMatrix, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__902)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_covarianceMatrix, __pyx_t_3) < 0) __PYX_ERR(30, 231, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":237
 * 
 * 
 *     def _mknp(self, xs):             # <<<<<<<<<<<<<<
 *         try:
 *             import numpy
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_67_mknp, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D__mknp, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__903)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 237, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_mknp, __pyx_t_3) < 0) __PYX_ERR(30, 237, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":244
 *             return xs
 * 
 *     def xVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.x() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_69xVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__904)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xVals, __pyx_t_3) < 0) __PYX_ERR(30, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":247
 *         return self._mknp([p.x() for p in self.points()])
 * 
 *     def xMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.xMin() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_71xMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__905)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xMins, __pyx_t_3) < 0) __PYX_ERR(30, 247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":251
 *         return self._mknp([p.xMin() for p in self.points()])
 * 
 *     def xMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.xMax() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_73xMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__906)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xMaxs, __pyx_t_3) < 0) __PYX_ERR(30, 251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":255
 *         return self._mknp([p.xMax() for p in self.points()])
 * 
 *     def xErrs(self):             # <<<<<<<<<<<<<<
 *         """All x errors"""
 *         return self._mknp([p.xErrs() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_75xErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__907)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 255, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xErrs, __pyx_t_3) < 0) __PYX_ERR(30, 255, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":259
 *         return self._mknp([p.xErrs() for p in self.points()])
 * 
 *     def xMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.xMins())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_77xMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__908)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xMin, __pyx_t_3) < 0) __PYX_ERR(30, 259, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":263
 *         return min(self.xMins())
 * 
 *     def xMax(self):             # <<<<<<<<<<<<<<
 *         """Highest x value."""
 *         return max(self.xMaxs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_79xMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_xMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__909)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_xMax, __pyx_t_3) < 0) __PYX_ERR(30, 263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":268
 * 
 * 
 *     def yVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.y() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_81yVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__910)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 268, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yVals, __pyx_t_3) < 0) __PYX_ERR(30, 268, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":271
 *         return self._mknp([p.y() for p in self.points()])
 * 
 *     def yMins(self):             # <<<<<<<<<<<<<<
 *         """All x low values."""
 *         return self._mknp([p.yMin() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_83yMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__911)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yMins, __pyx_t_3) < 0) __PYX_ERR(30, 271, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":275
 *         return self._mknp([p.yMin() for p in self.points()])
 * 
 *     def yMaxs(self):             # <<<<<<<<<<<<<<
 *         """All x high values."""
 *         return self._mknp([p.yMax() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_85yMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__912)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yMaxs, __pyx_t_3) < 0) __PYX_ERR(30, 275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":279
 *         return self._mknp([p.yMax() for p in self.points()])
 * 
 *     def yErrs(self):             # <<<<<<<<<<<<<<
 *         """All y errors"""
 *         return self._mknp([p.yErrs() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_87yErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__913)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yErrs, __pyx_t_3) < 0) __PYX_ERR(30, 279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":283
 *         return self._mknp([p.yErrs() for p in self.points()])
 * 
 *     def yMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest x value."""
 *         return min(self.yMins())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_89yMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__914)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 283, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yMin, __pyx_t_3) < 0) __PYX_ERR(30, 283, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":287
 *         return min(self.yMins())
 * 
 *     def yMax(self):             # <<<<<<<<<<<<<<
 *         """Highest y value."""
 *         return max(self.yMaxs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_91yMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_yMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__915)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 287, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_yMax, __pyx_t_3) < 0) __PYX_ERR(30, 287, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":292
 * 
 * 
 *     def zVals(self):             # <<<<<<<<<<<<<<
 *         return self._mknp([p.z() for p in self.points()])
 * 
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_93zVals, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zVals, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__916)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zVals, __pyx_t_3) < 0) __PYX_ERR(30, 292, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":295
 *         return self._mknp([p.z() for p in self.points()])
 * 
 *     def zMins(self):             # <<<<<<<<<<<<<<
 *         """All z low values."""
 *         return self._mknp([p.zMin() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_95zMins, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMins, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__917)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zMins, __pyx_t_3) < 0) __PYX_ERR(30, 295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":299
 *         return self._mknp([p.zMin() for p in self.points()])
 * 
 *     def zMaxs(self):             # <<<<<<<<<<<<<<
 *         """All z high values."""
 *         return self._mknp([p.zMax() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_97zMaxs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMaxs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__918)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zMaxs, __pyx_t_3) < 0) __PYX_ERR(30, 299, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":303
 *         return self._mknp([p.zMax() for p in self.points()])
 * 
 *     def zErrs(self):             # <<<<<<<<<<<<<<
 *         """All z errors"""
 *         return self._mknp([p.zErrs() for p in self.points()])
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_99zErrs, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zErrs, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__919)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zErrs, __pyx_t_3) < 0) __PYX_ERR(30, 303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":307
 *         return self._mknp([p.zErrs() for p in self.points()])
 * 
 *     def zMin(self):             # <<<<<<<<<<<<<<
 *         """Lowest z value."""
 *         return min(self.zMins())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_101zMin, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMin, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__920)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zMin, __pyx_t_3) < 0) __PYX_ERR(30, 307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "include/Scatter3D.pyx":311
 *         return min(self.zMins())
 * 
 *     def zMax(self):             # <<<<<<<<<<<<<<
 *         """Highest z value."""
 *         return max(self.zMaxs())
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_103zMax, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D_zMax, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__921)); if (unlikely(!__pyx_t_3)) __PYX_ERR(30, 311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D->tp_dict, __pyx_n_s_zMax, __pyx_t_3) < 0) __PYX_ERR(30, 311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_4yoda_4core_Scatter3D);

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_105__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___reduce_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__922)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._ptr cannot be converted to a Python object for pickling"
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9Scatter3D_107__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_n_s_Scatter3D___setstate_cython, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__923)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(0, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Scatter3D.pyx":317
 * 
 * ## Convenience alias
 * S3D = Scatter3D             # <<<<<<<<<<<<<<
 */
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_S3D, ((PyObject *)__pyx_ptype_4yoda_4core_Scatter3D)) < 0) __PYX_ERR(30, 317, __pyx_L1_error)

  /* "include/Functions.pyx":1
 * def mkScatter(ao, usefocus=False, p_usestddev=False, h_binsizediv=True, uflow_binwidth=-1., oflow_binwidth=-1.):             # <<<<<<<<<<<<<<
 *     """AnalysisObject -> Scatter{1,2,3}D
 *     Convert an AnalysisObject to a Scatter, using the logic of the bound mkScatter methods.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_9mkScatter, 0, __pyx_n_s_mkScatter, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__925)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__926);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mkScatter, __pyx_t_3) < 0) __PYX_ERR(5, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":26
 * 
 * 
 * def divide(ao1, ao2):             # <<<<<<<<<<<<<<
 *     """(AnalysisObject, AnalysisObject) -> Scatter{1,2,3}D
 *     Divide one AnalysisObject by another, producing a Scatter of appropriate dimension by using the logic of the bound divideBy methods."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_11divide, 0, __pyx_n_s_divide, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__928)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 26, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_divide, __pyx_t_3) < 0) __PYX_ERR(5, 26, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":55
 * 
 * 
 * def linspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced between xmin and xmax, with the first and
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_13linspace, 0, __pyx_n_s_linspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__930)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 55, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_linspace, __pyx_t_3) < 0) __PYX_ERR(5, 55, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":62
 * 
 * 
 * def logspace(nbins, xmin, xmax):             # <<<<<<<<<<<<<<
 *     """(int, float, float) -> list[float]
 *     Make a list of n+1 bin edges linearly spaced on the interval log(xmin..xmax), with
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_15logspace, 0, __pyx_n_s_logspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__931)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 62, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logspace, __pyx_t_3) < 0) __PYX_ERR(5, 62, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":69
 * 
 * 
 * def pdfspace(nbins, xmin, xmax, fn, nsample=10000):             # <<<<<<<<<<<<<<
 *     """(int, float, float, [int]) -> list[float]
 *     Make a list of n+1 bin edges spaced with density proportional to fn(x) between
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_17pdfspace, 0, __pyx_n_s_pdfspace, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__933)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__934);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pdfspace, __pyx_t_3) < 0) __PYX_ERR(5, 69, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":99
 * 
 * 
 * def index_between(x, binedges):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the index of the bin which would contain x, or -1 if there is no enclosing
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_19index_between, 0, __pyx_n_s_index_between, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__936)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 99, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_index_between, __pyx_t_3) < 0) __PYX_ERR(5, 99, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":106
 * 
 * 
 * def mean(sample):             # <<<<<<<<<<<<<<
 *     """(list[float]) -> float
 *     Return the unweighted mean of the entries in the provided sample list."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_21mean, 0, __pyx_n_s_mean, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__938)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 106, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mean, __pyx_t_3) < 0) __PYX_ERR(5, 106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":112
 * 
 * 
 * def covariance(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(list[float], list[float]) -> float
 *     Return the unweighted covariance of the two provided sample lists."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_23covariance, 0, __pyx_n_s_covariance, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__940)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_covariance, __pyx_t_3) < 0) __PYX_ERR(5, 112, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/Functions.pyx":118
 * 
 * 
 * def correlation(sample1, sample2):             # <<<<<<<<<<<<<<
 *     """(float, list[float]) -> int
 *     Return the unweighted correlation of the two provided sample lists."""
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_25correlation, 0, __pyx_n_s_correlation, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__941)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_correlation, __pyx_t_3) < 0) __PYX_ERR(5, 118, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":12
 * """
 * 
 * import sys             # <<<<<<<<<<<<<<
 * from libcpp.unordered_map cimport unordered_map
 * from cython.operator cimport preincrement as inc
 */
  __pyx_t_3 = __Pyx_ImportDottedModuleRelFirst(__pyx_n_s_sys, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 12, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_3) < 0) __PYX_ERR(6, 12, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":17
 * 
 * ## Check if a string matches any of the given patterns, and that it doesn't match any unpatterns (for path filtering)
 * def _pattern_check(name, patterns, unpatterns):             # <<<<<<<<<<<<<<
 *     import re
 *     if patterns:
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_27_pattern_check, 0, __pyx_n_s_pattern_check, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__943)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pattern_check, __pyx_t_3) < 0) __PYX_ERR(6, 17, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":86
 * 
 * 
 * def _bytestr_from_file(file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Read a file's contents as a returned bytestring.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_29_bytestr_from_file, 0, __pyx_n_s_bytestr_from_file, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__945)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 86, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_bytestr_from_file, __pyx_t_3) < 0) __PYX_ERR(6, 86, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":105
 * 
 * 
 * def _str_to_file(s, file_or_filename):             # <<<<<<<<<<<<<<
 *     """\
 *     Write a string to a file.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_31_str_to_file, 0, __pyx_n_s_str_to_file, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__947)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_str_to_file, __pyx_t_3) < 0) __PYX_ERR(6, 105, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":121
 * 
 * 
 * def _istxt(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return type(x) in [unicode, str]
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_33_istxt, 0, __pyx_n_s_istxt, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__949)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_istxt, __pyx_t_3) < 0) __PYX_ERR(6, 121, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":127
 *         return type(x) is str
 * 
 * def _mktxtifstr(x):             # <<<<<<<<<<<<<<
 *     if sys.version_info < (3, 0):
 *         return unicode(x) if type(x) is str else x
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_35_mktxtifstr, 0, __pyx_n_s_mktxtifstr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__950)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mktxtifstr, __pyx_t_3) < 0) __PYX_ERR(6, 127, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":138
 * ##
 * 
 * def read(filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided filename, auto-determining the format
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_37read, 0, __pyx_n_s_read, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__952)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__953);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_read, __pyx_t_3) < 0) __PYX_ERR(6, 138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":173
 * 
 * 
 * def readYODA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided YODA-format file.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_39readYODA, 0, __pyx_n_s_readYODA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__955)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__956);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readYODA, __pyx_t_3) < 0) __PYX_ERR(6, 173, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":194
 * 
 * 
 * def readFLAT(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided FLAT-format file.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_41readFLAT, 0, __pyx_n_s_readFLAT, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__957)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__958);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readFLAT, __pyx_t_3) < 0) __PYX_ERR(6, 194, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":216
 * 
 * 
 * def readAIDA(file_or_filename, asdict=True, patterns=None, unpatterns=None):             # <<<<<<<<<<<<<<
 *     """
 *     Read data objects from the provided AIDA-format file.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_43readAIDA, 0, __pyx_n_s_readAIDA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__959)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__960);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_readAIDA, __pyx_t_3) < 0) __PYX_ERR(6, 216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":244
 * ##
 * 
 * def write(ana_objs, filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided filename,
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_45write, 0, __pyx_n_s_write, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__962)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__963);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_write, __pyx_t_3) < 0) __PYX_ERR(6, 244, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":260
 * 
 * 
 * def writeYODA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in YODA format.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_47writeYODA, 0, __pyx_n_s_writeYODA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__965)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__966);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeYODA, __pyx_t_3) < 0) __PYX_ERR(6, 260, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":281
 * 
 * 
 * def writeFLAT(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in FLAT format.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_49writeFLAT, 0, __pyx_n_s_writeFLAT, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__967)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 281, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__968);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeFLAT, __pyx_t_3) < 0) __PYX_ERR(6, 281, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":303
 * 
 * # TODO: remove
 * def writeAIDA(ana_objs, file_or_filename, precision=-1):             # <<<<<<<<<<<<<<
 *     """
 *     Write data objects to the provided file in AIDA format.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_51writeAIDA, 0, __pyx_n_s_writeAIDA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__969)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_tuple__970);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeAIDA, __pyx_t_3) < 0) __PYX_ERR(6, 303, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":327
 * ##
 * 
 * class Index:             # <<<<<<<<<<<<<<
 *     """
 *     Index of a file.
 */
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_Index, __pyx_n_s_Index, (PyObject *) NULL, __pyx_n_s_yoda_core, __pyx_kp_s_Index_of_a_file); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "include/IO.pyx":331
 *     Index of a file.
 *     """
 *     def __init__(self, index_map, repr_string):             # <<<<<<<<<<<<<<
 *         self.index_map = index_map
 *         self.repr_string = repr_string
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Index_1__init__, 0, __pyx_n_s_Index___init, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__972)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_init, __pyx_t_2) < 0) __PYX_ERR(6, 331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":335
 *         self.repr_string = repr_string
 * 
 *     def toDict(self):             # <<<<<<<<<<<<<<
 *         """\
 *         Get a dictionary containing the index structure
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Index_3toDict, 0, __pyx_n_s_Index_toDict, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__973)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_toDict, __pyx_t_2) < 0) __PYX_ERR(6, 335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":351
 *         return self.index_map
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         """
 *         Get string representation of file index.
 */
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_5Index_5__repr__, 0, __pyx_n_s_Index___repr, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__974)); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_n_s_repr, __pyx_t_2) < 0) __PYX_ERR(6, 351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "include/IO.pyx":327
 * ##
 * 
 * class Index:             # <<<<<<<<<<<<<<
 *     """
 *     Index of a file.
 */
  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_Index, __pyx_empty_tuple, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Index, __pyx_t_2) < 0) __PYX_ERR(6, 327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "include/IO.pyx":400
 *     return {"dict" : indexDict, "str" : indexStr}
 * 
 * def mkIndexYODA(filename):             # <<<<<<<<<<<<<<
 *     """
 *     Generate Index object for the provided YODA-format file.
 */
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_4yoda_4core_53mkIndexYODA, 0, __pyx_n_s_mkIndexYODA, NULL, __pyx_n_s_yoda_core, __pyx_d, ((PyObject *)__pyx_codeobj__976)); if (unlikely(!__pyx_t_3)) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mkIndexYODA, __pyx_t_3) < 0) __PYX_ERR(6, 400, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "yoda/core.pyx":1
 * # cython: embedsignature=True             # <<<<<<<<<<<<<<
 * # cython: c_string_type=str, c_string_encoding=utf8
 * 
 */
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(8, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(8, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  if (__pyx_m) {
    if (__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init yoda.core", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    #if !CYTHON_USE_MODULE_STATE
    Py_CLEAR(__pyx_m);
    #else
    Py_DECREF(__pyx_m);
    if (pystate_addmodule_run) {
      PyObject *tp, *value, *tb;
      PyErr_Fetch(&tp, &value, &tb);
      PyState_RemoveModule(&__pyx_moduledef);
      PyErr_Restore(tp, value, tb);
    }
    #endif
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init yoda.core");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #elif PY_MAJOR_VERSION >= 3
  return __pyx_m;
  #else
  return;
  #endif
}
/* #### Code section: cleanup_globals ### */
/* #### Code section: cleanup_module ### */
/* #### Code section: main_method ### */
/* #### Code section: utility_code_pragmas ### */
#ifdef _MSC_VER
#pragma warning( push )
/* Warning 4127: conditional expression is constant
 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
 * compile-time, so this warning is not useful
 */
#pragma warning( disable : 4127 )
#endif



/* #### Code section: utility_code_def ### */

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyErrExceptionMatches */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    int result;
    PyObject *exc_type;
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *current_exception = tstate->current_exception;
    if (unlikely(!current_exception)) return 0;
    exc_type = (PyObject*) Py_TYPE(current_exception);
    if (exc_type == err) return 1;
#else
    exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
#endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(exc_type);
    #endif
    if (unlikely(PyTuple_Check(err))) {
        result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    } else {
        result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
    }
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(exc_type);
    #endif
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *tmp_value;
    assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
    if (value) {
        #if CYTHON_COMPILING_IN_CPYTHON
        if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
        #endif
            PyException_SetTraceback(value, tb);
    }
    tmp_value = tstate->current_exception;
    tstate->current_exception = value;
    Py_XDECREF(tmp_value);
#else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject* exc_value;
    exc_value = tstate->current_exception;
    tstate->current_exception = 0;
    *value = exc_value;
    *type = NULL;
    *tb = NULL;
    if (exc_value) {
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        #if CYTHON_COMPILING_IN_CPYTHON
        *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
        Py_XINCREF(*tb);
        #else
        *tb = PyException_GetTraceback(exc_value);
        #endif
    }
#else
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#endif
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError */
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS && PY_VERSION_HEX >= 0x030700B1
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
}

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

/* RaiseTooManyValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

/* RaiseNeedMoreValuesToUnpack */
static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

/* IterFinish */
static CYTHON_INLINE int __Pyx_IterFinish(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    PyObject* exc_type = __Pyx_PyErr_CurrentExceptionType();
    if (unlikely(exc_type)) {
        if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)))
            return -1;
        __Pyx_PyErr_Clear();
        return 0;
    }
    return 0;
}

/* UnpackItemEndCheck */
static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    }
    return __Pyx_IterFinish();
}

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = (*call)(func, arg, kw);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* RaiseException */
#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    __Pyx_PyThreadState_declare
    CYTHON_UNUSED_VAR(cause);
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    if (PyType_Check(type)) {
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                int is_subclass = PyObject_IsSubclass(instance_class, type);
                if (!is_subclass) {
                    instance_class = NULL;
                } else if (unlikely(is_subclass == -1)) {
                    goto bad;
                } else {
                    type = instance_class;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
    if (cause) {
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
      #if PY_VERSION_HEX >= 0x030C00A6
        PyException_SetTraceback(value, tb);
      #elif CYTHON_FAST_THREAD_STATE
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#else
        PyObject *tmp_type, *tmp_value, *tmp_tb;
        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
        Py_INCREF(tb);
        PyErr_Restore(tmp_type, tmp_value, tb);
        Py_XDECREF(tmp_tb);
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
#if PY_MAJOR_VERSION >= 3
    PyObject *kwdefs;
#endif
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) {
        return NULL;
    }
    if (
#if PY_MAJOR_VERSION >= 3
            co->co_kwonlyargcount == 0 &&
#endif
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
#if PY_MAJOR_VERSION >= 3
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
#endif
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
#if PY_MAJOR_VERSION >= 3
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
#else
    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, closure);
#endif
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = PyCFunction_GET_FUNCTION(func);
    self = PyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
    result = cfunc(self, arg);
    Py_LeaveRecursiveCall();
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

/* PyObjectFastCall */
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject **args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result;
    size_t i;
    argstuple = PyTuple_New((Py_ssize_t)nargs);
    if (unlikely(!argstuple)) return NULL;
    for (i = 0; i < nargs; i++) {
        Py_INCREF(args[i]);
        PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]);
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
    Py_DECREF(argstuple);
    return result;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject **args, size_t _nargs, PyObject *kwargs) {
    Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
#if CYTHON_COMPILING_IN_CPYTHON
    if (nargs == 0 && kwargs == NULL) {
#if defined(__Pyx_CyFunction_USED) && defined(NDEBUG)
        if (__Pyx_IsCyOrPyCFunction(func))
#else
        if (PyCFunction_Check(func))
#endif
        {
            if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
                return __Pyx_PyObject_CallMethO(func, NULL);
            }
        }
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (PyCFunction_Check(func))
        {
            if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
                return __Pyx_PyObject_CallMethO(func, args[0]);
            }
        }
    }
#endif
    #if PY_VERSION_HEX < 0x030800B1
    #if CYTHON_FAST_PYCCALL
    if (PyCFunction_Check(func)) {
        if (kwargs) {
            return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
        } else {
            return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
        }
    }
    #if PY_VERSION_HEX >= 0x030700A1
    if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
        return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
    }
    #endif
    #endif
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
    }
    #endif
    #endif
    #if CYTHON_VECTORCALL
    vectorcallfunc f = _PyVectorcall_Function(func);
    if (f) {
        return f(func, args, (size_t)nargs, kwargs);
    }
    #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
    if (__Pyx_CyFunction_CheckExact(func)) {
        __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
        if (f) return f(func, args, (size_t)nargs, kwargs);
    }
    #endif
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_empty_tuple, kwargs);
    }
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
}

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    __Pyx_TypeName obj_type_name;
    __Pyx_TypeName type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    type_name = __Pyx_PyType_GetName(type);
    PyErr_Format(PyExc_TypeError,
                 "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
                 obj_type_name, type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
}

/* TupleAndListFromArray */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
    PyObject *v;
    Py_ssize_t i;
    for (i = 0; i < length; i++) {
        v = dest[i] = src[i];
        Py_INCREF(v);
    }
}
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        Py_INCREF(__pyx_empty_tuple);
        return __pyx_empty_tuple;
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
    return res;
}
static CYTHON_INLINE PyObject *
__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return PyList_New(0);
    }
    res = PyList_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
    return res;
}
#endif

/* BytesEquals */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_RichCompareBool(s1, s2, equals);
#else
#if PY_MAJOR_VERSION < 3
    PyObject* owned_ref = NULL;
#endif
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
#if PY_MAJOR_VERSION < 3
    if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
        owned_ref = PyUnicode_FromObject(s2);
        if (unlikely(!owned_ref))
            return -1;
        s2 = owned_ref;
        s2_is_unicode = 1;
    } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
        owned_ref = PyUnicode_FromObject(s1);
        if (unlikely(!owned_ref))
            return -1;
        s1 = owned_ref;
        s1_is_unicode = 1;
    } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
        return __Pyx_PyBytes_Equals(s1, s2, equals);
    }
#endif
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length;
        int kind;
        void *data1, *data2;
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
        #if CYTHON_PEP393_ENABLED
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
        #else
            hash1 = ((PyUnicodeObject*)s1)->hash;
            hash2 = ((PyUnicodeObject*)s2)->hash;
        #endif
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            #if PY_MAJOR_VERSION < 3
            Py_XDECREF(owned_ref);
            #endif
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        #if PY_MAJOR_VERSION < 3
        Py_XDECREF(owned_ref);
        #endif
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_EQ);
return_ne:
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(owned_ref);
    #endif
    return (equals == Py_NE);
#endif
}

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = PyTuple_GET_SIZE(kwnames);
    for (i = 0; i < n; i++)
    {
        if (s == PyTuple_GET_ITEM(kwnames, i)) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        int eq = __Pyx_PyUnicode_Equals(s, PyTuple_GET_ITEM(kwnames, i), Py_EQ);
        if (unlikely(eq != 0)) {
            if (unlikely(eq < 0)) return NULL;  // error
            return kwvalues[i];
        }
    }
    return NULL;  // not found (no exception set)
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
#ifdef WITH_THREAD
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
#endif
    CYTHON_UNUSED_VAR(clineno);
    CYTHON_UNUSED_VAR(lineno);
    CYTHON_UNUSED_VAR(filename);
    CYTHON_MAYBE_UNUSED_VAR(nogil);
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(1);
    }
    #if PY_MAJOR_VERSION < 3
    ctx = PyString_FromString(name);
    #else
    ctx = PyUnicode_FromString(name);
    #endif
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
#ifdef WITH_THREAD
    if (nogil)
        PyGILState_Release(state);
#endif
}

/* RaiseArgTupleInvalid */
static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

/* KeywordStringCheck */
static int __Pyx_CheckKeywordStrings(
    PyObject *kw,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kw, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kw))) {
        if (unlikely(PyTuple_GET_SIZE(kw) == 0))
            return 1;
        if (!kw_allowed) {
            key = PyTuple_GET_ITEM(kw, 0);
            goto invalid_keyword;
        }
#if PY_VERSION_HEX < 0x03090000
        for (pos = 0; pos < PyTuple_GET_SIZE(kw); pos++) {
            key = PyTuple_GET_ITEM(kw, pos);
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
        }
#endif
        return 1;
    }
    while (PyDict_Next(kw, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if (!kw_allowed && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

/* ParseKeywords */
static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject *const *kwvalues,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    int kwds_is_tuple = CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds));
    while (1) {
        if (kwds_is_tuple) {
            if (pos >= PyTuple_GET_SIZE(kwds)) break;
            key = PyTuple_GET_ITEM(kwds, pos);
            value = kwvalues[pos];
            pos++;
        }
        else
        {
            if (!PyDict_Next(kwds, &pos, &key, &value)) break;
        }
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (__Pyx_PyUnicode_GET_LENGTH(**name) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key)
                );
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (__Pyx_PyUnicode_GET_LENGTH(**argname) != __Pyx_PyUnicode_GET_LENGTH(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    #if PY_MAJOR_VERSION < 3
    PyErr_Format(PyExc_TypeError,
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

/* ArgTypeTest */
static int __Pyx__ArgTypeTest(PyObject *obj, PyTypeObject *type, const char *name, int exact)
{
    __Pyx_TypeName type_name;
    __Pyx_TypeName obj_type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    else if (exact) {
        #if PY_MAJOR_VERSION == 2
        if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(__Pyx_TypeCheck(obj, type))) return 1;
    }
    type_name = __Pyx_PyType_GetName(type);
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected " __Pyx_FMT_TYPENAME
        ", got " __Pyx_FMT_TYPENAME ")", name, type_name, obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return 0;
}

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if !CYTHON_AVOID_BORROWED_REFS
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1
    result = _PyDict_GetItem_KnownHash(__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    } else if (unlikely(PyErr_Occurred())) {
        return NULL;
    }
#elif CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
#else
    result = PyDict_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
#endif
#else
    result = PyObject_GetItem(__pyx_d, name);
    __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* PyObjectCallNoArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg = NULL;
    return __Pyx_PyObject_FastCall(func, (&arg)+1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!j)) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_subscript) {
            PyObject *r, *key = PyInt_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return sm->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

/* RaiseUnboundLocalError */
static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* RaiseClosureNameError */
static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    PyObject *exc_value = exc_info->exc_value;
    if (exc_value == NULL || exc_value == Py_None) {
        *value = NULL;
        *type = NULL;
        *tb = NULL;
    } else {
        *value = exc_value;
        Py_INCREF(*value);
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        *tb = PyException_GetTraceback(exc_value);
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #endif
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    PyObject *tmp_value = exc_info->exc_value;
    exc_info->exc_value = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
  #else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
  #endif
}
#endif

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type = NULL, *local_value, *local_tb = NULL;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if PY_VERSION_HEX >= 0x030C00A6
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
  #else
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
  #endif
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE && PY_VERSION_HEX >= 0x030C00A6
    if (unlikely(tstate->current_exception))
#elif CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
      #if PY_VERSION_HEX >= 0x030B00a4
        tmp_value = exc_info->exc_value;
        exc_info->exc_value = local_value;
        tmp_type = NULL;
        tmp_tb = NULL;
        Py_XDECREF(local_type);
        Py_XDECREF(local_tb);
      #else
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
      #endif
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *empty_list = 0;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (unlikely(!py_import))
        goto bad;
    if (!from_list) {
        empty_list = PyList_New(0);
        if (unlikely(!empty_list))
            goto bad;
        from_list = empty_list;
    }
    #endif
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if ((1) && (strchr(__Pyx_MODULE_NAME, '.'))) {
                #if CYTHON_COMPILING_IN_LIMITED_API
                module = PyImport_ImportModuleLevelObject(
                    name, empty_dict, empty_dict, from_list, 1);
                #else
                module = PyImport_ImportModuleLevelObject(
                    name, __pyx_d, empty_dict, from_list, 1);
                #endif
                if (unlikely(!module)) {
                    if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0;
        }
        #endif
        if (!module) {
            #if PY_MAJOR_VERSION < 3
            PyObject *py_level = PyInt_FromLong(level);
            if (unlikely(!py_level))
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, __pyx_d, empty_dict, from_list, py_level, (PyObject *)NULL);
            Py_DECREF(py_level);
            #else
            #if CYTHON_COMPILING_IN_LIMITED_API
            module = PyImport_ImportModuleLevelObject(
                name, empty_dict, empty_dict, from_list, level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, __pyx_d, empty_dict, from_list, level);
            #endif
            #endif
        }
    }
bad:
    Py_XDECREF(empty_dict);
    Py_XDECREF(empty_list);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_import);
    #endif
    return module;
}

/* ImportFrom */
static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
    PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
    if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
        const char* module_name_str = 0;
        PyObject* module_name = 0;
        PyObject* module_dot = 0;
        PyObject* full_name = 0;
        PyErr_Clear();
        module_name_str = PyModule_GetName(module);
        if (unlikely(!module_name_str)) { goto modbad; }
        module_name = PyUnicode_FromString(module_name_str);
        if (unlikely(!module_name)) { goto modbad; }
        module_dot = PyUnicode_Concat(module_name, __pyx_kp_u__3);
        if (unlikely(!module_dot)) { goto modbad; }
        full_name = PyUnicode_Concat(module_dot, name);
        if (unlikely(!full_name)) { goto modbad; }
        #if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
        {
            PyObject *modules = PyImport_GetModuleDict();
            if (unlikely(!modules))
                goto modbad;
            value = PyObject_GetItem(modules, full_name);
        }
        #else
        value = PyImport_GetModule(full_name);
        #endif
      modbad:
        Py_XDECREF(full_name);
        Py_XDECREF(module_dot);
        Py_XDECREF(module_name);
    }
    if (unlikely(!value)) {
        PyErr_Format(PyExc_ImportError,
        #if PY_MAJOR_VERSION < 3
            "cannot import name %.230s", PyString_AS_STRING(name));
        #else
            "cannot import name %S", name);
        #endif
    }
    return value;
}

/* pybytes_as_double */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj) {
    PyObject *float_value;
#if PY_MAJOR_VERSION >= 3
    float_value = PyFloat_FromString(obj);
#else
    float_value = PyFloat_FromString(obj, 0);
#endif
    if (likely(float_value)) {
        double value = PyFloat_AS_DOUBLE(float_value);
        Py_DECREF(float_value);
        return value;
    }
    return (double)-1;
}
static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) {
    int last_was_punctuation = 1;
    Py_ssize_t i;
    for (i=0; i < length; i++) {
        char chr = start[i];
        int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E');
        *buffer = chr;
        buffer += (chr != '_');
        if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure;
        last_was_punctuation = is_punctuation;
    }
    if (unlikely(last_was_punctuation)) goto parse_failure;
    *buffer = '\0';
    return buffer;
parse_failure:
    return NULL;
}
static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) {
    int matches = 1;
    char sign = start[0];
    int is_signed = (sign == '+') | (sign == '-');
    start += is_signed;
    length -= is_signed;
    switch (start[0]) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            matches &= (start[1] == 'a' || start[1] == 'A');
            matches &= (start[2] == 'n' || start[2] == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            matches &= (start[1] == 'n' || start[1] == 'N');
            matches &= (start[2] == 'f' || start[2] == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            matches &= (start[3] == 'i' || start[3] == 'I');
            matches &= (start[4] == 'n' || start[4] == 'N');
            matches &= (start[5] == 'i' || start[5] == 'I');
            matches &= (start[6] == 't' || start[6] == 'T');
            matches &= (start[7] == 'y' || start[7] == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) {
    return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd));
}
CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) {
    double value;
    Py_ssize_t i, digits;
    const char *last = start + length;
    char *end;
    while (__Pyx__PyBytes_AsDouble_IsSpace(*start))
        start++;
    while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1]))
        last--;
    length = last - start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyBytes_AsDouble_inf_nan(start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    digits = 0;
    for (i=0; i < length; digits += start[i++] != '_');
    if (likely(digits == length)) {
        value = PyOS_string_to_double(start, &end, NULL);
    } else if (digits < 40) {
        char number[40];
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}

/* pynumber_float */
static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj) {
    double val;
    if (PyLong_CheckExact(obj)) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (likely(__Pyx_PyLong_IsCompact(obj))) {
            val = (double) __Pyx_PyLong_CompactValue(obj);
            goto no_error;
        }
#endif
        val = PyLong_AsDouble(obj);
    } else if (PyUnicode_CheckExact(obj)) {
        val = __Pyx_PyUnicode_AsDouble(obj);
    } else if (PyBytes_CheckExact(obj)) {
        val = __Pyx_PyBytes_AsDouble(obj);
    } else if (PyByteArray_CheckExact(obj)) {
        val = __Pyx_PyByteArray_AsDouble(obj);
    } else {
        return PyNumber_Float(obj);
    }
    if (unlikely(val == -1 && PyErr_Occurred())) {
        return NULL;
    }
#if CYTHON_USE_PYLONG_INTERNALS
no_error:
#endif
    return PyFloat_FromDouble(val);
}

/* PyIntCompare */
static CYTHON_INLINE int __Pyx_PyInt_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 0;
    }
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
        return (a != b);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) != 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 1;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 1;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal != 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
#if CYTHON_COMPILING_IN_LIMITED_API
        double a = __pyx_PyFloat_AsDouble(op1);
#else
        double a = PyFloat_AS_DOUBLE(op1);
#endif
        return ((double)a != (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_NE));
}

/* GetAttr */
static CYTHON_INLINE PyObject *__Pyx_GetAttr(PyObject *o, PyObject *n) {
#if CYTHON_USE_TYPE_SLOTS
#if PY_MAJOR_VERSION >= 3
    if (likely(PyUnicode_Check(n)))
#else
    if (likely(PyString_Check(n)))
#endif
        return __Pyx_PyObject_GetAttrStr(o, n);
#endif
    return PyObject_GetAttr(o, n);
}

/* HasAttr */
static CYTHON_INLINE int __Pyx_HasAttr(PyObject *o, PyObject *n) {
    PyObject *r;
    if (unlikely(!__Pyx_PyBaseString_Check(n))) {
        PyErr_SetString(PyExc_TypeError,
                        "hasattr(): attribute name must be string");
        return -1;
    }
    r = __Pyx_GetAttr(o, n);
    if (!r) {
        PyErr_Clear();
        return 0;
    } else {
        Py_DECREF(r);
        return 1;
    }
}

/* ImportDottedModule */
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
    PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
    if (unlikely(PyErr_Occurred())) {
        PyErr_Clear();
    }
    if (likely(PyTuple_GET_SIZE(parts_tuple) == count)) {
        partial_name = name;
    } else {
        slice = PySequence_GetSlice(parts_tuple, 0, count);
        if (unlikely(!slice))
            goto bad;
        sep = PyUnicode_FromStringAndSize(".", 1);
        if (unlikely(!sep))
            goto bad;
        partial_name = PyUnicode_Join(sep, slice);
    }
    PyErr_Format(
#if PY_MAJOR_VERSION < 3
        PyExc_ImportError,
        "No module named '%s'", PyString_AS_STRING(partial_name));
#else
#if PY_VERSION_HEX >= 0x030600B1
        PyExc_ModuleNotFoundError,
#else
        PyExc_ImportError,
#endif
        "No module named '%U'", partial_name);
#endif
bad:
    Py_XDECREF(sep);
    Py_XDECREF(slice);
    Py_XDECREF(partial_name);
    return NULL;
}
#endif
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
    PyObject *imported_module;
#if PY_VERSION_HEX < 0x030700A1 || (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400)
    PyObject *modules = PyImport_GetModuleDict();
    if (unlikely(!modules))
        return NULL;
    imported_module = __Pyx_PyDict_GetItemStr(modules, name);
    Py_XINCREF(imported_module);
#else
    imported_module = PyImport_GetModule(name);
#endif
    return imported_module;
}
#endif
#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
    Py_ssize_t i, nparts;
    nparts = PyTuple_GET_SIZE(parts_tuple);
    for (i=1; i < nparts && module; i++) {
        PyObject *part, *submodule;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        part = PyTuple_GET_ITEM(parts_tuple, i);
#else
        part = PySequence_ITEM(parts_tuple, i);
#endif
        submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
        Py_DECREF(part);
#endif
        Py_DECREF(module);
        module = submodule;
    }
    if (unlikely(!module)) {
        return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
    }
    return module;
}
#endif
static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
#if PY_MAJOR_VERSION < 3
    PyObject *module, *from_list, *star = __pyx_n_s__4;
    CYTHON_UNUSED_VAR(parts_tuple);
    from_list = PyList_New(1);
    if (unlikely(!from_list))
        return NULL;
    Py_INCREF(star);
    PyList_SET_ITEM(from_list, 0, star);
    module = __Pyx_Import(name, from_list, 0);
    Py_DECREF(from_list);
    return module;
#else
    PyObject *imported_module;
    PyObject *module = __Pyx_Import(name, NULL, 0);
    if (!parts_tuple || unlikely(!module))
        return module;
    imported_module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(imported_module)) {
        Py_DECREF(module);
        return imported_module;
    }
    PyErr_Clear();
    return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
#endif
}
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030400B1
    PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(module)) {
        PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_n_s_spec);
        if (likely(spec)) {
            PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_n_s_initializing);
            if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
                Py_DECREF(spec);
                spec = NULL;
            }
            Py_XDECREF(unsafe);
        }
        if (likely(!spec)) {
            PyErr_Clear();
            return module;
        }
        Py_DECREF(spec);
        Py_DECREF(module);
    } else if (PyErr_Occurred()) {
        PyErr_Clear();
    }
#endif
    return __Pyx__ImportDottedModule(name, parts_tuple);
}

/* ImportDottedModuleRelFirst */
static PyObject *__Pyx_ImportDottedModuleRelFirst(PyObject *name, PyObject *parts_tuple) {
    PyObject *module;
    PyObject *from_list = NULL;
#if PY_MAJOR_VERSION < 3
    PyObject *star = __pyx_n_s__4;
    from_list = PyList_New(1);
    if (unlikely(!from_list))
        return NULL;
    Py_INCREF(star);
    PyList_SET_ITEM(from_list, 0, star);
#endif
    module = __Pyx_Import(name, from_list, -1);
    Py_XDECREF(from_list);
    if (module) {
        #if PY_MAJOR_VERSION >= 3
        if (parts_tuple) {
            module = __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
        }
        #endif
        return module;
    }
    if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
        return NULL;
    PyErr_Clear();
    return __Pyx_ImportDottedModule(name, parts_tuple);
}

/* PyObjectCallOneArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *args[2] = {NULL, arg};
    return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* SliceObject */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
        Py_ssize_t cstart, Py_ssize_t cstop,
        PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
        int has_cstart, int has_cstop, int wraparound) {
    __Pyx_TypeName obj_type_name;
#if CYTHON_USE_TYPE_SLOTS
    PyMappingMethods* mp;
#if PY_MAJOR_VERSION < 3
    PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
    if (likely(ms && ms->sq_slice)) {
        if (!has_cstart) {
            if (_py_start && (*_py_start != Py_None)) {
                cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
                if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstart = 0;
        }
        if (!has_cstop) {
            if (_py_stop && (*_py_stop != Py_None)) {
                cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
                if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
            } else
                cstop = PY_SSIZE_T_MAX;
        }
        if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
            Py_ssize_t l = ms->sq_length(obj);
            if (likely(l >= 0)) {
                if (cstop < 0) {
                    cstop += l;
                    if (cstop < 0) cstop = 0;
                }
                if (cstart < 0) {
                    cstart += l;
                    if (cstart < 0) cstart = 0;
                }
            } else {
                if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                    goto bad;
                PyErr_Clear();
            }
        }
        return ms->sq_slice(obj, cstart, cstop);
    }
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    mp = Py_TYPE(obj)->tp_as_mapping;
    if (likely(mp && mp->mp_subscript))
#else
    CYTHON_UNUSED_VAR(wraparound);
#endif
    {
        PyObject* result;
        PyObject *py_slice, *py_start, *py_stop;
        if (_py_slice) {
            py_slice = *_py_slice;
        } else {
            PyObject* owned_start = NULL;
            PyObject* owned_stop = NULL;
            if (_py_start) {
                py_start = *_py_start;
            } else {
                if (has_cstart) {
                    owned_start = py_start = PyInt_FromSsize_t(cstart);
                    if (unlikely(!py_start)) goto bad;
                } else
                    py_start = Py_None;
            }
            if (_py_stop) {
                py_stop = *_py_stop;
            } else {
                if (has_cstop) {
                    owned_stop = py_stop = PyInt_FromSsize_t(cstop);
                    if (unlikely(!py_stop)) {
                        Py_XDECREF(owned_start);
                        goto bad;
                    }
                } else
                    py_stop = Py_None;
            }
            py_slice = PySlice_New(py_start, py_stop, Py_None);
            Py_XDECREF(owned_start);
            Py_XDECREF(owned_stop);
            if (unlikely(!py_slice)) goto bad;
        }
#if CYTHON_USE_TYPE_SLOTS
        result = mp->mp_subscript(obj, py_slice);
#else
        result = PyObject_GetItem(obj, py_slice);
#endif
        if (!_py_slice) {
            Py_DECREF(py_slice);
        }
        return result;
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is unsliceable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
bad:
    return NULL;
}

/* PyFloatBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace, int zerodivision_check) {
    const double b = floatval;
    double a, result;
    CYTHON_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    if (likely(PyFloat_CheckExact(op1))) {
#if CYTHON_COMPILING_IN_LIMITED_API
        a = __pyx_PyFloat_AsDouble(op1);
#else
        a = PyFloat_AS_DOUBLE(op1);
#endif
        
    } else
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        a = (double) PyInt_AS_LONG(op1);
        
    } else
    #endif
    if (likely(PyLong_CheckExact(op1))) {
        #if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsZero(op1)) {
            a = 0.0;
            
        } else if (__Pyx_PyLong_IsCompact(op1)) {
            a = (double) __Pyx_PyLong_CompactValue(op1);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op1);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
            switch (size) {
                case -2:
                case 2:
                    if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
                        a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -2)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                case 3:
                    if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
                        a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -3)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                case 4:
                    if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
                        a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) ((PY_LONG_LONG)1 << 53))) {
                            if (size == -4)
                                a = -a;
                            break;
                        }
                    }
                    CYTHON_FALLTHROUGH;
                default:
        #endif
                    a = PyLong_AsDouble(op1);
                    if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
        #if CYTHON_USE_PYLONG_INTERNALS
            }
        }
        #endif
    } else {
        return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
    }
        PyFPE_START_PROTECT("divide", return NULL)
        result = a / b;
        PyFPE_END_PROTECT(result)
        return PyFloat_FromDouble(result);
}
#endif

/* UnpackUnboundCMethod */
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
    if (unlikely(!selfless_args)) return NULL;
    PyObject *result = PyObject_Call(method, selfless_args, kwargs);
    Py_DECREF(selfless_args);
    return result;
}
static PyMethodDef __Pyx_UnboundCMethod_Def = {
     "CythonUnboundCMethod",
     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
     METH_VARARGS | METH_KEYWORDS,
     NULL
};
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    target->method = method;
#if CYTHON_COMPILING_IN_CPYTHON
    #if PY_MAJOR_VERSION >= 3
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    #else
    if (likely(!PyCFunction_Check(method)))
    #endif
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    } else
#endif
#if defined(CYTHON_COMPILING_IN_PYPY)
#elif PY_VERSION_HEX >= 0x03090000
    if (PyCFunction_CheckExact(method))
#else
    if (PyCFunction_Check(method))
#endif
    {
        PyObject *self;
        int self_found;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        self = PyObject_GetAttrString(method, "__self__");
        if (!self) {
            PyErr_Clear();
        }
#else
        self = PyCFunction_GET_SELF(method);
#endif
        self_found = (self && self != Py_None);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        Py_XDECREF(self);
#endif
        if (self_found) {
            PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
            if (unlikely(!unbound_method)) return -1;
            Py_DECREF(method);
            target->method = unbound_method;
        }
    }
    return 0;
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030600B1
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    if (likely(cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            #if PY_VERSION_HEX >= 0x030700A0
            return (*(__Pyx_PyCFunctionFast)(void*)(PyCFunction)cfunc->func)(self, args, 2);
            #else
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
            #endif
        }
        #if PY_VERSION_HEX >= 0x030700A0
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return (*(__Pyx_PyCFunctionFastWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, 2, NULL);
        #endif
    }
    return __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        args = PyTuple_New(2);
        if (unlikely(!args)) goto bad;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = (*(PyCFunctionWithKeywords)(void*)(PyCFunction)cfunc->func)(self, args, NULL);
        else
            result = (*cfunc->func)(self, args);
    } else {
        args = PyTuple_New(3);
        if (unlikely(!args)) goto bad;
        Py_INCREF(self);
        PyTuple_SET_ITEM(args, 0, self);
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 1, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 2, arg2);
        result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    }
#else
    args = PyTuple_Pack(3, self, arg1, arg2);
    if (unlikely(!args)) goto bad;
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
#endif
bad:
    Py_XDECREF(args);
    return result;
}

/* SliceTupleAndList */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_crop_slice(Py_ssize_t* _start, Py_ssize_t* _stop, Py_ssize_t* _length) {
    Py_ssize_t start = *_start, stop = *_stop, length = *_length;
    if (start < 0) {
        start += length;
        if (start < 0)
            start = 0;
    }
    if (stop < 0)
        stop += length;
    else if (stop > length)
        stop = length;
    *_length = stop - start;
    *_start = start;
    *_stop = stop;
}
static CYTHON_INLINE PyObject* __Pyx_PyList_GetSlice(
            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
    Py_ssize_t length = PyList_GET_SIZE(src);
    __Pyx_crop_slice(&start, &stop, &length);
    if (length <= 0) {
        return PyList_New(0);
    }
    return __Pyx_PyList_FromArray(((PyListObject*)src)->ob_item + start, length);
}
static CYTHON_INLINE PyObject* __Pyx_PyTuple_GetSlice(
            PyObject* src, Py_ssize_t start, Py_ssize_t stop) {
    Py_ssize_t length = PyTuple_GET_SIZE(src);
    __Pyx_crop_slice(&start, &stop, &length);
    return __Pyx_PyTuple_FromArray(((PyTupleObject*)src)->ob_item + start, length);
}
#endif

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
        
            x = (long)((unsigned long)a + (unsigned long)b);
            if (likely((x^a) >= 0 || (x^b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_add(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        if (unlikely(__Pyx_PyLong_IsZero(op1))) {
            return __Pyx_NewRef(op2);
        }
        if (likely(__Pyx_PyLong_IsCompact(op1))) {
            a = __Pyx_PyLong_CompactValue(op1);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op1);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
            }
        }
                x = a + b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla + llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
#if CYTHON_COMPILING_IN_LIMITED_API
        double a = __pyx_PyFloat_AsDouble(op1);
#else
        double a = PyFloat_AS_DOUBLE(op1);
#endif
            double result;
            
            PyFPE_START_PROTECT("add", return NULL)
            result = ((double)a) + (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#endif

/* PyObjectGetMethod */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    __Pyx_TypeName type_name;
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
        if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
#elif PY_MAJOR_VERSION >= 3
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
        #endif
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (likely(descr != NULL)) {
        *method = descr;
        return 0;
    }
    type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}

/* PyObjectCallMethod0 */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* RaiseNoneIterError */
static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
}

/* UnpackTupleError */
static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {
    if (t == Py_None) {
      __Pyx_RaiseNoneNotIterableError();
    } else if (PyTuple_GET_SIZE(t) < index) {
      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));
    } else {
      __Pyx_RaiseTooManyValuesError(index);
    }
}

/* UnpackTuple2 */
static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(
        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {
    PyObject *value1 = NULL, *value2 = NULL;
#if CYTHON_COMPILING_IN_PYPY
    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;
    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;
#else
    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);
    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);
#endif
    if (decref_tuple) {
        Py_DECREF(tuple);
    }
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
#if CYTHON_COMPILING_IN_PYPY
bad:
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
#endif
}
static int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,
                                       int has_known_size, int decref_tuple) {
    Py_ssize_t index;
    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;
    iternextfunc iternext;
    iter = PyObject_GetIter(tuple);
    if (unlikely(!iter)) goto bad;
    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }
    iternext = __Pyx_PyObject_GetIterNextFunc(iter);
    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }
    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }
    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;
    Py_DECREF(iter);
    *pvalue1 = value1;
    *pvalue2 = value2;
    return 0;
unpacking_failed:
    if (!has_known_size && __Pyx_IterFinish() == 0)
        __Pyx_RaiseNeedMoreValuesError(index);
bad:
    Py_XDECREF(iter);
    Py_XDECREF(value1);
    Py_XDECREF(value2);
    if (decref_tuple) { Py_XDECREF(tuple); }
    return -1;
}

/* dict_iter */
static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,
                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {
    is_dict = is_dict || likely(PyDict_CheckExact(iterable));
    *p_source_is_dict = is_dict;
    if (is_dict) {
#if !CYTHON_COMPILING_IN_PYPY
        *p_orig_length = PyDict_Size(iterable);
        Py_INCREF(iterable);
        return iterable;
#elif PY_MAJOR_VERSION >= 3
        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;
        PyObject **pp = NULL;
        if (method_name) {
            const char *name = PyUnicode_AsUTF8(method_name);
            if (strcmp(name, "iteritems") == 0) pp = &py_items;
            else if (strcmp(name, "iterkeys") == 0) pp = &py_keys;
            else if (strcmp(name, "itervalues") == 0) pp = &py_values;
            if (pp) {
                if (!*pp) {
                    *pp = PyUnicode_FromString(name + 4);
                    if (!*pp)
                        return NULL;
                }
                method_name = *pp;
            }
        }
#endif
    }
    *p_orig_length = 0;
    if (method_name) {
        PyObject* iter;
        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);
        if (!iterable)
            return NULL;
#if !CYTHON_COMPILING_IN_PYPY
        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))
            return iterable;
#endif
        iter = PyObject_GetIter(iterable);
        Py_DECREF(iterable);
        return iter;
    }
    return PyObject_GetIter(iterable);
}
static CYTHON_INLINE int __Pyx_dict_iter_next(
        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,
        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {
    PyObject* next_item;
#if !CYTHON_COMPILING_IN_PYPY
    if (source_is_dict) {
        PyObject *key, *value;
        if (unlikely(orig_length != PyDict_Size(iter_obj))) {
            PyErr_SetString(PyExc_RuntimeError, "dictionary changed size during iteration");
            return -1;
        }
        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {
            return 0;
        }
        if (pitem) {
            PyObject* tuple = PyTuple_New(2);
            if (unlikely(!tuple)) {
                return -1;
            }
            Py_INCREF(key);
            Py_INCREF(value);
            PyTuple_SET_ITEM(tuple, 0, key);
            PyTuple_SET_ITEM(tuple, 1, value);
            *pitem = tuple;
        } else {
            if (pkey) {
                Py_INCREF(key);
                *pkey = key;
            }
            if (pvalue) {
                Py_INCREF(value);
                *pvalue = value;
            }
        }
        return 1;
    } else if (PyTuple_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyTuple_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else if (PyList_CheckExact(iter_obj)) {
        Py_ssize_t pos = *ppos;
        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;
        *ppos = pos + 1;
        next_item = PyList_GET_ITEM(iter_obj, pos);
        Py_INCREF(next_item);
    } else
#endif
    {
        next_item = PyIter_Next(iter_obj);
        if (unlikely(!next_item)) {
            return __Pyx_IterFinish();
        }
    }
    if (pitem) {
        *pitem = next_item;
    } else if (pkey && pvalue) {
        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))
            return -1;
    } else if (pkey) {
        *pkey = next_item;
    } else {
        *pvalue = next_item;
    }
    return 1;
}

/* SetItemInt */
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (unlikely(!j)) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            PyObject* old = PyList_GET_ITEM(o, n);
            Py_INCREF(v);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
            return 1;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_ass_subscript) {
            int r;
            PyObject *key = PyInt_FromSsize_t(i);
            if (unlikely(!key)) return -1;
            r = mm->mp_ass_subscript(o, key, v);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return sm->sq_ass_item(o, i, v);
        }
    }
#else
#if CYTHON_COMPILING_IN_PYPY
    if (is_list || (PySequence_Check(o) && !PyDict_Check(o)))
#else
    if (is_list || PySequence_Check(o))
#endif
    {
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
}

/* PyIntCompare */
static CYTHON_INLINE int __Pyx_PyInt_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 1;
    }
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long a = PyInt_AS_LONG(op1);
        return (a == b);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) == 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 0;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 0;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal == 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
#if CYTHON_COMPILING_IN_LIMITED_API
        double a = __pyx_PyFloat_AsDouble(op1);
#else
        double a = PyFloat_AS_DOUBLE(op1);
#endif
        return ((double)a == (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_EQ));
}

/* ObjectGetItem */
#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) {
    PyObject *runerr = NULL;
    Py_ssize_t key_value;
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetName(Py_TYPE(index));
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError,
            "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
        __Pyx_DECREF_TypeName(index_type_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
    __Pyx_TypeName obj_type_name;
    if (likely(PyType_Check(obj))) {
        PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_n_s_class_getitem);
        if (meth) {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
    PyTypeObject *tp = Py_TYPE(obj);
    PyMappingMethods *mm = tp->tp_as_mapping;
    PySequenceMethods *sm = tp->tp_as_sequence;
    if (likely(mm && mm->mp_subscript)) {
        return mm->mp_subscript(obj, key);
    }
    if (likely(sm && sm->sq_item)) {
        return __Pyx_PyObject_GetIndex(obj, key);
    }
    return __Pyx_PyObject_GetItem_Slow(obj, key);
}
#endif

/* PyIntBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyInt_CheckExact(op1))) {
        const long b = intval;
        long x;
        long a = PyInt_AS_LONG(op1);
        
            x = (long)((unsigned long)a - (unsigned long)b);
            if (likely((x^a) >= 0 || (x^~b) >= 0))
                return PyInt_FromLong(x);
            return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
    }
    #endif
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        const long b = intval;
        long a, x;
#ifdef HAVE_LONG_LONG
        const PY_LONG_LONG llb = intval;
        PY_LONG_LONG lla, llx;
#endif
        if (unlikely(__Pyx_PyLong_IsZero(op1))) {
            return PyLong_FromLong(-intval);
        }
        if (likely(__Pyx_PyLong_IsCompact(op1))) {
            a = __Pyx_PyLong_CompactValue(op1);
        } else {
            const digit* digits = __Pyx_PyLong_Digits(op1);
            const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
            switch (size) {
                case -2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 2:
                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                        a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 3:
                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                        a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case -4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                case 4:
                    if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                        a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                        break;
                    #ifdef HAVE_LONG_LONG
                    } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                        lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                        goto long_long;
                    #endif
                    }
                    CYTHON_FALLTHROUGH;
                default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
            }
        }
                x = a - b;
            return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
        long_long:
                llx = lla - llb;
            return PyLong_FromLongLong(llx);
#endif
        
        
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
#if CYTHON_COMPILING_IN_LIMITED_API
        double a = __pyx_PyFloat_AsDouble(op1);
#else
        double a = PyFloat_AS_DOUBLE(op1);
#endif
            double result;
            
            PyFPE_START_PROTECT("subtract", return NULL)
            result = ((double)a) - (double)b;
            PyFPE_END_PROTECT(result)
            return PyFloat_FromDouble(result);
    }
    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
}
#endif

/* Globals */
static PyObject* __Pyx_Globals(void) {
    return __Pyx_NewRef(__pyx_d);
}

/* DictGetItem */
#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            if (unlikely(PyTuple_Check(key))) {
                PyObject* args = PyTuple_Pack(1, key);
                if (likely(args)) {
                    PyErr_SetObject(PyExc_KeyError, args);
                    Py_DECREF(args);
                }
            } else {
                PyErr_SetObject(PyExc_KeyError, key);
            }
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#endif

/* PyObjectLookupSpecial */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
#if PY_MAJOR_VERSION < 3
    if (unlikely(PyInstance_Check(obj)))
        return with_error ? __Pyx_PyObject_GetAttrStr(obj, attr_name) : __Pyx_PyObject_GetAttrStrNoError(obj, attr_name);
#endif
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else if (with_error) {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#endif

/* CallUnboundCMethod0 */
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *args, *result = NULL;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_ASSUME_SAFE_MACROS
    args = PyTuple_New(1);
    if (unlikely(!args)) goto bad;
    Py_INCREF(self);
    PyTuple_SET_ITEM(args, 0, self);
#else
    args = PyTuple_Pack(1, self);
    if (unlikely(!args)) goto bad;
#endif
    result = __Pyx_PyObject_Call(cfunc->method, args, NULL);
    Py_DECREF(args);
bad:
    return result;
}

/* py_dict_items */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_CallUnboundCMethod0(&__pyx_umethod_PyDict_Type_items, d);
    else
        return PyDict_Items(d);
}

/* PyObjectSetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_setattr))
        return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
#endif
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* CallNextTpDealloc */
static void __Pyx_call_next_tp_dealloc(PyObject* obj, destructor current_tp_dealloc) {
    PyTypeObject* type = Py_TYPE(obj);
    destructor tp_dealloc = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_dealloc, destructor) != current_tp_dealloc)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_dealloc = __Pyx_PyType_GetSlot(type, tp_dealloc, destructor)) == current_tp_dealloc)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type)
        tp_dealloc(obj);
}

/* CallNextTpTraverse */
static int __Pyx_call_next_tp_traverse(PyObject* obj, visitproc v, void *a, traverseproc current_tp_traverse) {
    PyTypeObject* type = Py_TYPE(obj);
    traverseproc tp_traverse = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc) != current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_traverse = __Pyx_PyType_GetSlot(type, tp_traverse, traverseproc)) == current_tp_traverse)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_traverse)
        return tp_traverse(obj, v, a);
    return 0;
}

/* CallNextTpClear */
static void __Pyx_call_next_tp_clear(PyObject* obj, inquiry current_tp_clear) {
    PyTypeObject* type = Py_TYPE(obj);
    inquiry tp_clear = NULL;
    while (type && __Pyx_PyType_GetSlot(type, tp_clear, inquiry) != current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    while (type && (tp_clear = __Pyx_PyType_GetSlot(type, tp_clear, inquiry)) == current_tp_clear)
        type = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
    if (type && tp_clear)
        tp_clear(obj);
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_0_0
#define __PYX_HAVE_RT_ImportType_3_0_0
static PyTypeObject *__Pyx_ImportType_3_0_0(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_0_0 check_size)
{
    PyObject *result = 0;
    char warning[200];
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !CYTHON_COMPILING_IN_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_0_0 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_0_0 && (size_t)basicsize > size) {
        PyOS_snprintf(warning, sizeof(warning),
            "%s.%s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize);
        if (PyErr_WarnEx(NULL, warning, 0) < 0) goto bad;
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* GetVTable */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_n_s_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_n_s_pyx_vtable);
#endif
    if (!ob)
        goto bad;
    ptr = PyCapsule_GetPointer(ob, 0);
    if (!ptr && !PyErr_Occurred())
        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
    Py_DECREF(ob);
    return ptr;
bad:
    Py_XDECREF(ob);
    return NULL;
}

/* FixUpExtensionType */
#if CYTHON_USE_TYPE_SPECS
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if PY_VERSION_HEX > 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
#else
    const PyType_Slot *slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
        int changed = 0;
#if !(PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON)
        const
#endif
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
#if PY_VERSION_HEX < 0x030900b1
                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_weaklistoffset = memb->offset;
                    changed = 1;
                }
                else if (strcmp(memb->name, "__dictoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_dictoffset = memb->offset;
                    changed = 1;
                }
#if CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
#if PY_VERSION_HEX >= 0x030800b4
                    type->tp_vectorcall_offset = memb->offset;
#else
                    type->tp_print = (printfunc) memb->offset;
#endif
                    changed = 1;
                }
#endif
#else
                if ((0));
#endif
#if PY_VERSION_HEX <= 0x030900b1 && CYTHON_COMPILING_IN_CPYTHON
                else if (strcmp(memb->name, "__module__") == 0) {
                    PyObject *descr;
                    assert(memb->type == T_OBJECT);
                    assert(memb->flags == 0 || memb->flags == READONLY);
                    descr = PyDescr_NewMember(type, memb);
                    if (unlikely(!descr))
                        return -1;
                    if (unlikely(PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr) < 0)) {
                        Py_DECREF(descr);
                        return -1;
                    }
                    Py_DECREF(descr);
                    changed = 1;
                }
#endif
            }
            memb++;
        }
        if (changed)
            PyType_Modified(type);
    }
#endif
    return 0;
}
#endif

/* ValidateBasesTuple */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
    Py_ssize_t i, n = PyTuple_GET_SIZE(bases);
    for (i = 1; i < n; i++)
    {
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
        PyTypeObject *b;
#if PY_MAJOR_VERSION < 3
        if (PyClass_Check(b0))
        {
            PyErr_Format(PyExc_TypeError, "base class '%.200s' is an old-style class",
                         PyString_AS_STRING(((PyClassObject*)b0)->cl_name));
            return -1;
        }
#endif
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
            PyErr_Format(PyExc_TypeError,
                "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
            __Pyx_DECREF_TypeName(b_name);
            return -1;
        }
        if (dictoffset == 0 && b->tp_dictoffset)
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetName(b);
            PyErr_Format(PyExc_TypeError,
                "extension type '%.200s' has no __dict__ slot, "
                "but base type '" __Pyx_FMT_TYPENAME "' has: "
                "either add 'cdef dict __dict__' to the extension type "
                "or add '__slots__ = [...]' to the base type",
                type_name, b_name);
            __Pyx_DECREF_TypeName(b_name);
            return -1;
        }
    }
    return 0;
}
#endif

/* PyType_Ready */
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !(CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API) || defined(PYSTON_MAJOR_VERSION)
    (void)__Pyx_PyObject_CallMethod0;
#if CYTHON_USE_TYPE_SPECS
    (void)__Pyx_validate_bases_tuple;
#endif
    return PyType_Ready(t);
#else
    int r;
    PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
    if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
        return -1;
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
    {
        int gc_was_enabled;
    #if PY_VERSION_HEX >= 0x030A00b1
        gc_was_enabled = PyGC_Disable();
        (void)__Pyx_PyObject_CallMethod0;
    #else
        PyObject *ret, *py_status;
        PyObject *gc = NULL;
        #if PY_VERSION_HEX >= 0x030700a1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400)
        gc = PyImport_GetModule(__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_isenabled);
        if (unlikely(!py_status)) {
            Py_DECREF(gc);
            return -1;
        }
        gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
        Py_DECREF(py_status);
        if (gc_was_enabled > 0) {
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_disable);
            if (unlikely(!ret)) {
                Py_DECREF(gc);
                return -1;
            }
            Py_DECREF(ret);
        } else if (unlikely(gc_was_enabled == -1)) {
            Py_DECREF(gc);
            return -1;
        }
    #endif
        t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
#if PY_VERSION_HEX >= 0x030A0000
        t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
#endif
#else
        (void)__Pyx_PyObject_CallMethod0;
#endif
    r = PyType_Ready(t);
#if PY_VERSION_HEX >= 0x03050000 && !defined(PYSTON_MAJOR_VERSION)
        t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
    #if PY_VERSION_HEX >= 0x030A00b1
        if (gc_was_enabled)
            PyGC_Enable();
    #else
        if (gc_was_enabled) {
            PyObject *tp, *v, *tb;
            PyErr_Fetch(&tp, &v, &tb);
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_kp_u_enable);
            if (likely(ret || r == -1)) {
                Py_XDECREF(ret);
                PyErr_Restore(tp, v, tb);
            } else {
                Py_XDECREF(tp);
                Py_XDECREF(v);
                Py_XDECREF(tb);
                r = -1;
            }
        }
        Py_DECREF(gc);
    #endif
    }
#endif
    return r;
#endif
}

/* PyObject_GenericGetAttrNoDict */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject *__Pyx_RaiseGenericGetAttributeError(PyTypeObject *tp, PyObject *attr_name) {
    __Pyx_TypeName type_name = __Pyx_PyType_GetName(tp);
    PyErr_Format(PyExc_AttributeError,
#if PY_MAJOR_VERSION >= 3
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, attr_name);
#else
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%.400s'",
                 type_name, PyString_AS_STRING(attr_name));
#endif
    __Pyx_DECREF_TypeName(type_name);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_GenericGetAttrNoDict(PyObject* obj, PyObject* attr_name) {
    PyObject *descr;
    PyTypeObject *tp = Py_TYPE(obj);
    if (unlikely(!PyString_Check(attr_name))) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    assert(!tp->tp_dictoffset);
    descr = _PyType_Lookup(tp, attr_name);
    if (unlikely(!descr)) {
        return __Pyx_RaiseGenericGetAttributeError(tp, attr_name);
    }
    Py_INCREF(descr);
    #if PY_MAJOR_VERSION < 3
    if (likely(PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_HAVE_CLASS)))
    #endif
    {
        descrgetfunc f = Py_TYPE(descr)->tp_descr_get;
        if (unlikely(f)) {
            PyObject *res = f(descr, obj, (PyObject *)tp);
            Py_DECREF(descr);
            return res;
        }
    }
    return descr;
}
#endif

/* PyObject_GenericGetAttr */
#if CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP && PY_VERSION_HEX < 0x03070000
static PyObject* __Pyx_PyObject_GenericGetAttr(PyObject* obj, PyObject* attr_name) {
    if (unlikely(Py_TYPE(obj)->tp_dictoffset)) {
        return PyObject_GenericGetAttr(obj, attr_name);
    }
    return __Pyx_PyObject_GenericGetAttrNoDict(obj, attr_name);
}
#endif

/* SetVTable */
static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
    if (unlikely(!ob))
        goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_n_s_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_n_s_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* MergeVTables */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i;
    void** base_vtables;
    __Pyx_TypeName tp_base_name;
    __Pyx_TypeName base_name;
    void* unknown = (void*)-1;
    PyObject* bases = type->tp_bases;
    int base_depth = 0;
    {
        PyTypeObject* base = type->tp_base;
        while (base) {
            base_depth += 1;
            base = base->tp_base;
        }
    }
    base_vtables = (void**) malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
    for (i = 1; i < PyTuple_GET_SIZE(bases); i++) {
        void* base_vtable = __Pyx_GetVtable(((PyTypeObject*)PyTuple_GET_ITEM(bases, i)));
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = type->tp_base;
            for (j = 0; j < base_depth; j++) {
                if (base_vtables[j] == unknown) {
                    base_vtables[j] = __Pyx_GetVtable(base);
                    base_vtables[j + 1] = unknown;
                }
                if (base_vtables[j] == base_vtable) {
                    break;
                } else if (base_vtables[j] == NULL) {
                    goto bad;
                }
                base = base->tp_base;
            }
        }
    }
    PyErr_Clear();
    free(base_vtables);
    return 0;
bad:
    tp_base_name = __Pyx_PyType_GetName(type->tp_base);
    base_name = __Pyx_PyType_GetName((PyTypeObject*)PyTuple_GET_ITEM(bases, i));
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
    free(base_vtables);
    return -1;
}
#endif

/* SetupReduce */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_n_s_name);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_getstate = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
    PyObject *getstate = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_n_s_getstate);
#else
    getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_getstate);
    if (!getstate && PyErr_Occurred()) {
        goto __PYX_BAD;
    }
#endif
    if (getstate) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_getstate);
#else
        object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_n_s_getstate);
        if (!object_getstate && PyErr_Occurred()) {
            goto __PYX_BAD;
        }
#endif
        if (object_getstate != getstate) {
            goto __PYX_GOOD;
        }
    }
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_n_s_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_n_s_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_n_s_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_reduce_cython);
            if (likely(reduce_cython)) {
                ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_n_s_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_n_s_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = PyDict_SetItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = PyDict_DelItem(((PyTypeObject*)type_obj)->tp_dict, __pyx_n_s_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred()) {
        __Pyx_TypeName type_obj_name =
            __Pyx_PyType_GetName((PyTypeObject*)type_obj);
        PyErr_Format(PyExc_RuntimeError,
            "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
        __Pyx_DECREF_TypeName(type_obj_name);
    }
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
    Py_XDECREF(object_getstate);
    Py_XDECREF(getstate);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}
#endif

/* FetchSharedCythonModule */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    PyObject *abi_module = PyImport_AddModule((char*) __PYX_ABI_MODULE_NAME);
    if (unlikely(!abi_module)) return NULL;
    Py_INCREF(abi_module);
    return abi_module;
}

/* FetchCommonType */
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t basicsize,
                               Py_ssize_t expected_basicsize) {
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
#if !CYTHON_USE_TYPE_SPECS
static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* abi_module;
    const char* object_name;
    PyTypeObject *cached_type = NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    object_name = strrchr(type->tp_name, '.');
    object_name = object_name ? object_name+1 : type->tp_name;
    cached_type = (PyTypeObject*) PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        if (__Pyx_VerifyCachedType(
              (PyObject *)cached_type,
              object_name,
              cached_type->tp_basicsize,
              type->tp_basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    if (PyType_Ready(type) < 0) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, (PyObject *)type) < 0)
        goto bad;
    Py_INCREF(type);
    cached_type = type;
done:
    Py_DECREF(abi_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#else
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module, *cached_type = NULL;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) return NULL;
    cached_type = PyObject_GetAttrString(abi_module, object_name);
    if (cached_type) {
        Py_ssize_t basicsize;
#if CYTHON_COMPILING_IN_LIMITED_API
        PyObject *py_basicsize;
        py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
        if (unlikely(!py_basicsize)) goto bad;
        basicsize = PyLong_AsSsize_t(py_basicsize);
        Py_DECREF(py_basicsize);
        py_basicsize = 0;
        if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
#else
        basicsize = likely(PyType_Check(cached_type)) ? ((PyTypeObject*) cached_type)->tp_basicsize : -1;
#endif
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              basicsize,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    }
    if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
    PyErr_Clear();
    CYTHON_UNUSED_VAR(module);
    cached_type = __Pyx_PyType_FromModuleAndSpec(abi_module, spec, bases);
    if (unlikely(!cached_type)) goto bad;
    if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
    if (PyObject_SetAttrString(abi_module, object_name, cached_type) < 0) goto bad;
done:
    Py_DECREF(abi_module);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}
#endif

/* PyVectorcallFastCallDict */
#if CYTHON_METH_FASTCALL
static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    PyObject *res = NULL;
    PyObject *kwnames;
    PyObject **newargs;
    PyObject **kwvalues;
    Py_ssize_t i, pos;
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
    if (unlikely(newargs == NULL)) {
        PyErr_NoMemory();
        return NULL;
    }
    for (j = 0; j < nargs; j++) newargs[j] = args[j];
    kwnames = PyTuple_New(nkw);
    if (unlikely(kwnames == NULL)) {
        PyMem_Free(newargs);
        return NULL;
    }
    kwvalues = newargs + nargs;
    pos = i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (PyDict_Next(kw, &pos, &key, &value)) {
        keys_are_strings &= Py_TYPE(key)->tp_flags;
        Py_INCREF(key);
        Py_INCREF(value);
        PyTuple_SET_ITEM(kwnames, i, key);
        kwvalues[i] = value;
        i++;
    }
    if (unlikely(!keys_are_strings)) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        goto cleanup;
    }
    res = vc(func, newargs, nargs, kwnames);
cleanup:
    Py_DECREF(kwnames);
    for (i = 0; i < nkw; i++)
        Py_DECREF(kwvalues[i]);
    PyMem_Free(newargs);
    return res;
}
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    if (likely(kw == NULL) || PyDict_GET_SIZE(kw) == 0) {
        return vc(func, args, nargs, NULL);
    }
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared */
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1
    __Pyx_Py_XDECREF_SET(
        __Pyx_CyFunction_GetClassObj(f),
            ((classobj) ? __Pyx_NewRef(classobj) : NULL));
#else
    __Pyx_Py_XDECREF_SET(
        ((PyCMethodObject *) (f))->mm_class,
        (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
}
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure)
{
    CYTHON_UNUSED_VAR(closure);
    if (unlikely(op->func_doc == NULL)) {
        if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
#if PY_MAJOR_VERSION >= 3
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#else
            op->func_doc = PyString_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
#endif
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_name == NULL)) {
#if PY_MAJOR_VERSION >= 3
        op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#else
        op->func_name = PyString_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_qualname);
    return op->func_qualname;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_dict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(op);
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_tuple;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->defaults_kwdict;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value || value == Py_None) {
        value = NULL;
    } else if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = op->func_annotations;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    int is_coroutine;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
#if PY_VERSION_HEX >= 0x03050000
    if (is_coroutine) {
        PyObject *module, *fromlist, *marker = __pyx_n_s_is_coroutine;
        fromlist = PyList_New(1);
        if (unlikely(!fromlist)) return NULL;
        Py_INCREF(marker);
        PyList_SET_ITEM(fromlist, 0, marker);
        module = PyImport_ImportModuleLevelObject(__pyx_n_s_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        op->func_is_coroutine = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(op->func_is_coroutine)) {
            return __Pyx_NewRef(op->func_is_coroutine);
        }
ignore:
        PyErr_Clear();
    }
#endif
    op->func_is_coroutine = __Pyx_PyBool_FromLong(is_coroutine);
    return __Pyx_NewRef(op->func_is_coroutine);
}
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {(char *) "_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
    {(char *) "__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#if CYTHON_USE_TYPE_SPECS
    {(char *) "__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#if CYTHON_METH_FASTCALL
#if CYTHON_BACKPORT_VECTORCALL
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
    {(char *) "__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#endif
#if PY_VERSION_HEX < 0x030500A0
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
#endif
#endif
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
{
    CYTHON_UNUSED_VAR(args);
#if PY_MAJOR_VERSION >= 3
    Py_INCREF(m->func_qualname);
    return m->func_qualname;
#else
    return PyString_FromString(((PyCFunctionObject*)m)->m_ml->ml_name);
#endif
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if PY_VERSION_HEX < 0x030500A0
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
    if (unlikely(op == NULL))
        return NULL;
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
    Py_XINCREF(closure);
    op->func_closure = closure;
    Py_XINCREF(module);
    cf->m_module = module;
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1
    op->func_classobj = NULL;
#else
    ((PyCMethodObject*)op)->mm_class = NULL;
#endif
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults_pyobjects = 0;
    op->defaults_size = 0;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    op->func_is_coroutine = NULL;
#if CYTHON_METH_FASTCALL
    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
    case METH_NOARGS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
        break;
    case METH_O:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
        break;
    case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
        break;
    case METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
        break;
    case METH_VARARGS | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = NULL;
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        Py_DECREF(op);
        return NULL;
    }
#endif
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
#if PY_VERSION_HEX < 0x030900B1
    Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
    {
        PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
        ((PyCMethodObject *) (m))->mm_class = NULL;
        Py_XDECREF(cls);
    }
#endif
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    Py_CLEAR(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_XDECREF(pydefaults[i]);
        PyObject_Free(m->defaults);
        m->defaults = NULL;
    }
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    __Pyx_PyHeapTypeObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    Py_VISIT(m->func_closure);
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
    Py_VISIT(m->func_dict);
    Py_VISIT(m->func_name);
    Py_VISIT(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    Py_VISIT(m->func_code);
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    Py_VISIT(m->func_is_coroutine);
    if (m->defaults) {
        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
        int i;
        for (i = 0; i < m->defaults_pyobjects; i++)
            Py_VISIT(pydefaults[i]);
    }
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
#if PY_MAJOR_VERSION >= 3
    return PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
#else
    return PyString_FromFormat("<cyfunction %s at %p>",
                               PyString_AsString(op->func_qualname), (void *)op);
#endif
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    Py_ssize_t size;
    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void*)meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 0))
                return (*meth)(self, NULL);
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
            size = PyTuple_GET_SIZE(arg);
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            PyErr_Format(PyExc_TypeError,
                "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
                f->m_ml->ml_name, size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
    PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
                 f->m_ml->ml_name);
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
#if CYTHON_METH_FASTCALL
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS
        return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
#else
        (void) &__Pyx_PyVectorcall_FastCallDict;
        return PyVectorcall_Call(func, args, kw);
#endif
    }
#endif
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
        argc = PyTuple_GET_SIZE(args);
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
#if PY_MAJOR_VERSION > 2
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
#else
            PyErr_SetString(PyExc_TypeError,
                            "unbound method needs an argument");
#endif
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
{
    int ret = 0;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        if (unlikely(nargs < 1)) {
            PyErr_Format(PyExc_TypeError, "%.200s() needs an argument",
                         ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(PyTuple_GET_SIZE(kwnames))) {
        PyErr_Format(PyExc_TypeError,
                     "%.200s() takes no keyword arguments", ((PyCFunctionObject*)cyfunc)->m_ml->ml_name);
        return -1;
    }
    return ret;
}
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, NULL);
}
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
            def->ml_name, nargs);
        return NULL;
    }
    return def->ml_meth(self, args[0]);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((_PyCFunctionFastWithKeywords)(void(*)(void))def->ml_meth)(self, args, nargs, kwnames);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyMethodDef* def = ((PyCFunctionObject*)cyfunc)->m_ml;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
        self = ((PyCFunctionObject*)cyfunc)->m_self;
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCMethod)(void(*)(void))def->ml_meth)(self, cls, args, (size_t)nargs, kwnames);
}
#endif
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_CyFunctionType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
    {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
    {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
    {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
    {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
    {Py_tp_methods, (void *)__pyx_CyFunction_methods},
    {Py_tp_members, (void *)__pyx_CyFunction_members},
    {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
    {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
    {0, 0},
};
static PyType_Spec __pyx_CyFunctionType_spec = {
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if (defined(_Py_TPFLAGS_HAVE_VECTORCALL) && CYTHON_METH_FASTCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
#else
static PyTypeObject __pyx_CyFunctionType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
    (destructor) __Pyx_CyFunction_dealloc,
#if !CYTHON_METH_FASTCALL
    0,
#elif CYTHON_BACKPORT_VECTORCALL
    (printfunc)offsetof(__pyx_CyFunctionObject, func_vectorcall),
#else
    offsetof(PyCFunctionObject, vectorcall),
#endif
    0,
    0,
#if PY_MAJOR_VERSION < 3
    0,
#else
    0,
#endif
    (reprfunc) __Pyx_CyFunction_repr,
    0,
    0,
    0,
    0,
    __Pyx_CyFunction_CallAsMethod,
    0,
    0,
    0,
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#ifdef _Py_TPFLAGS_HAVE_VECTORCALL
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    0,
    (traverseproc) __Pyx_CyFunction_traverse,
    (inquiry) __Pyx_CyFunction_clear,
    0,
#if PY_VERSION_HEX < 0x030500A0
    offsetof(__pyx_CyFunctionObject, func_weakreflist),
#else
    offsetof(PyCFunctionObject, m_weakreflist),
#endif
    0,
    0,
    __pyx_CyFunction_methods,
    __pyx_CyFunction_members,
    __pyx_CyFunction_getsets,
    0,
    0,
    __Pyx_PyMethod_New,
    0,
    offsetof(__pyx_CyFunctionObject, func_dict),
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
    0,
#endif
#if __PYX_NEED_TP_PRINT_SLOT
    0,
#endif
#if PY_VERSION_HEX >= 0x030C0000
    0,
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
    0,
#endif
};
#endif
static int __pyx_CyFunction_init(PyObject *module) {
#if CYTHON_USE_TYPE_SPECS
    __pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_CyFunctionType_spec, NULL);
#else
    CYTHON_UNUSED_VAR(module);
    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
#endif
    if (unlikely(__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_Malloc(size);
    if (unlikely(!m->defaults))
        return PyErr_NoMemory();
    memset(m->defaults, 0, size);
    m->defaults_pyobjects = pyobjects;
    m->defaults_size = size;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* CalculateMetaclass */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
        tmptype = Py_TYPE(tmp);
#if PY_MAJOR_VERSION < 3
        if (tmptype == &PyClass_Type)
            continue;
#endif
        if (!metaclass) {
            metaclass = tmptype;
            continue;
        }
        if (PyType_IsSubtype(metaclass, tmptype))
            continue;
        if (PyType_IsSubtype(tmptype, metaclass)) {
            metaclass = tmptype;
            continue;
        }
        PyErr_SetString(PyExc_TypeError,
                        "metaclass conflict: "
                        "the metaclass of a derived class "
                        "must be a (non-strict) subclass "
                        "of the metaclasses of all its bases");
        return NULL;
    }
    if (!metaclass) {
#if PY_MAJOR_VERSION < 3
        metaclass = &PyClass_Type;
#else
        metaclass = &PyType_Type;
#endif
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* PyObjectCall2Args */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args[3] = {NULL, arg1, arg2};
    return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* Py3ClassCreate */
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
    PyObject *ns;
    if (metaclass) {
        PyObject *prep = __Pyx_PyObject_GetAttrStrNoError(metaclass, __pyx_n_s_prepare);
        if (prep) {
            PyObject *pargs[3] = {NULL, name, bases};
            ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
            Py_DECREF(prep);
        } else {
            if (unlikely(PyErr_Occurred()))
                return NULL;
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
#if PY_VERSION_HEX >= 0x03030000
    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
#else
    CYTHON_MAYBE_UNUSED_VAR(qualname);
#endif
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
    return ns;
bad:
    Py_DECREF(ns);
    return NULL;
}
#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
static int __Pyx_SetNamesPEP487(PyObject *type_obj) {
    PyTypeObject *type = (PyTypeObject*) type_obj;
    PyObject *names_to_set, *key, *value, *set_name, *tmp;
    Py_ssize_t i = 0;
#if CYTHON_USE_TYPE_SLOTS
    names_to_set = PyDict_Copy(type->tp_dict);
#else
    {
        PyObject *d = PyObject_GetAttr(type_obj, __pyx_n_s_dict_2);
        names_to_set = NULL;
        if (likely(d)) {
            PyObject *names_to_set = PyDict_New();
            int ret = likely(names_to_set) ? PyDict_Update(names_to_set, d) : -1;
            Py_DECREF(d);
            if (unlikely(ret < 0))
                Py_CLEAR(names_to_set);
        }
    }
#endif
    if (unlikely(names_to_set == NULL))
        goto bad;
    while (PyDict_Next(names_to_set, &i, &key, &value)) {
        set_name = __Pyx_PyObject_LookupSpecialNoError(value, __pyx_n_s_set_name);
        if (unlikely(set_name != NULL)) {
            tmp = __Pyx_PyObject_Call2Args(set_name, type_obj, key);
            Py_DECREF(set_name);
            if (unlikely(tmp == NULL)) {
                __Pyx_TypeName value_type_name =
                    __Pyx_PyType_GetName(Py_TYPE(value));
                __Pyx_TypeName type_name = __Pyx_PyType_GetName(type);
                PyErr_Format(PyExc_RuntimeError,
#if PY_MAJOR_VERSION >= 3
                    "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %R " "in '" __Pyx_FMT_TYPENAME "'",
                    value_type_name, key, type_name);
#else
                    "Error calling __set_name__ on '" __Pyx_FMT_TYPENAME "' instance %.100s in '" __Pyx_FMT_TYPENAME "'",
                    value_type_name,
                    PyString_Check(key) ? PyString_AS_STRING(key) : "?",
                    type_name);
#endif
                goto bad;
            } else {
                Py_DECREF(tmp);
            }
        }
        else if (unlikely(PyErr_Occurred())) {
            goto bad;
        }
    }
    Py_DECREF(names_to_set);
    return 0;
bad:
    Py_XDECREF(names_to_set);
    return -1;
}
static PyObject *__Pyx_InitSubclassPEP487(PyObject *type_obj, PyObject *mkw) {
#if CYTHON_USE_TYPE_SLOTS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyTypeObject *type = (PyTypeObject*) type_obj;
    PyObject *mro = type->tp_mro;
    Py_ssize_t i, nbases;
    if (unlikely(!mro)) goto done;
    (void) &__Pyx_GetBuiltinName;
    Py_INCREF(mro);
    nbases = PyTuple_GET_SIZE(mro);
    assert(PyTuple_GET_ITEM(mro, 0) == type_obj);
    for (i = 1; i < nbases-1; i++) {
        PyObject *base, *dict, *meth;
        base = PyTuple_GET_ITEM(mro, i);
        dict = ((PyTypeObject *)base)->tp_dict;
        meth = __Pyx_PyDict_GetItemStrWithError(dict, __pyx_n_s_init_subclass);
        if (unlikely(meth)) {
            descrgetfunc f = Py_TYPE(meth)->tp_descr_get;
            PyObject *res;
            Py_INCREF(meth);
            if (likely(f)) {
                res = f(meth, NULL, type_obj);
                Py_DECREF(meth);
                if (unlikely(!res)) goto bad;
                meth = res;
            }
            res = __Pyx_PyObject_FastCallDict(meth, NULL, 0, mkw);
            Py_DECREF(meth);
            if (unlikely(!res)) goto bad;
            Py_DECREF(res);
            goto done;
        } else if (unlikely(PyErr_Occurred())) {
            goto bad;
        }
    }
done:
    Py_XDECREF(mro);
    return type_obj;
bad:
    Py_XDECREF(mro);
    Py_DECREF(type_obj);
    return NULL;
#else
    PyObject *super_type, *super, *func, *res;
#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type)
    super_type = __Pyx_GetBuiltinName(__pyx_n_s_super);
#else
    super_type = (PyObject*) &PySuper_Type;
    (void) &__Pyx_GetBuiltinName;
#endif
    super = likely(super_type) ? __Pyx_PyObject_Call2Args(super_type, type_obj, type_obj) : NULL;
#if CYTHON_COMPILING_IN_PYPY && !defined(PySuper_Type)
    Py_XDECREF(super_type);
#endif
    if (unlikely(!super)) {
        Py_CLEAR(type_obj);
        goto done;
    }
    func = __Pyx_PyObject_GetAttrStrNoError(super, __pyx_n_s_init_subclass);
    Py_DECREF(super);
    if (likely(!func)) {
        if (unlikely(PyErr_Occurred()))
            Py_CLEAR(type_obj);
        goto done;
    }
    res = __Pyx_PyObject_FastCallDict(func, NULL, 0, mkw);
    Py_DECREF(func);
    if (unlikely(!res))
        Py_CLEAR(type_obj);
    Py_XDECREF(res);
done:
    return type_obj;
#endif
}
#endif
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
                                      PyObject *dict, PyObject *mkw,
                                      int calculate_metaclass, int allow_py2_metaclass) {
    PyObject *result;
    PyObject *owned_metaclass = NULL;
    PyObject *margs[4] = {NULL, name, bases, dict};
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
        if (owned_metaclass) {
            metaclass = owned_metaclass;
        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
            PyErr_Clear();
        } else {
            return NULL;
        }
    }
    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
        Py_XDECREF(owned_metaclass);
        if (unlikely(!metaclass))
            return NULL;
        owned_metaclass = metaclass;
    }
    result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET,
#if PY_VERSION_HEX < 0x030600A4
        (metaclass == (PyObject*)&PyType_Type) ? NULL : mkw
#else
        mkw
#endif
    );
    Py_XDECREF(owned_metaclass);
#if PY_VERSION_HEX < 0x030600A4 && CYTHON_PEP487_INIT_SUBCLASS
    if (likely(result) && likely(PyType_Check(result))) {
        if (unlikely(__Pyx_SetNamesPEP487(result) < 0)) {
            Py_CLEAR(result);
        } else {
            result = __Pyx_InitSubclassPEP487(result, mkw);
        }
    }
#else
    (void) &__Pyx_GetBuiltinName;
#endif
    return result;
}

/* CLineInTraceback */
#ifndef CYTHON_CLINE_IN_TRACEBACK
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    if (unlikely(!__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback))
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        (void) PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);
    }
    else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
#if !CYTHON_COMPILING_IN_LIMITED_API
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = start + (end - start) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}
#endif

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    if (c_line) {
        (void) __pyx_cfilenm;
        (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    _PyTraceback_Add(funcname, filename, py_line);
}
#else
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = NULL;
    PyObject *py_funcname = NULL;
    #if PY_MAJOR_VERSION < 3
    PyObject *py_srcfile = NULL;
    py_srcfile = PyString_FromString(filename);
    if (!py_srcfile) goto bad;
    #endif
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        funcname = PyUnicode_AsUTF8(py_funcname);
        if (!funcname) goto bad;
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        if (!py_funcname) goto bad;
        #endif
    }
    #if PY_MAJOR_VERSION < 3
    py_code = __Pyx_PyCode_New(
        0,
        0,
        0,
        0,
        0,
        0,
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    #else
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    #endif
    Py_XDECREF(py_funcname);  // XDECREF since it's only set on Py3 if cline
    return py_code;
bad:
    Py_XDECREF(py_funcname);
    #if PY_MAJOR_VERSION < 3
    Py_XDECREF(py_srcfile);
    #endif
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyFrameObject *py_frame = 0;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject *ptype, *pvalue, *ptraceback;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) {
            /* If the code object creation fails, then we should clear the
               fetched exception references and propagate the new exception */
            Py_XDECREF(ptype);
            Py_XDECREF(pvalue);
            Py_XDECREF(ptraceback);
            goto bad;
        }
        __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}
#endif

/* CIntFromPyVerify */
#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
    {\
        func_type value = func_value;\
        if (sizeof(target_type) < sizeof(func_type)) {\
            if (unlikely(value != (func_type) (target_type) value)) {\
                func_type zero = 0;\
                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
                    return (target_type) -1;\
                if (is_unsigned && unlikely(value < zero))\
                    goto raise_neg_overflow;\
                else\
                    goto raise_overflow;\
            }\
        }\
        return (target_type) value;\
    }

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyInt_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if ((sizeof(size_t) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(size_t, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (size_t) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            if (unlikely(__Pyx_PyLong_IsNeg(x))) {
                goto raise_neg_overflow;
            } else if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_DigitCount(x)) {
                    case 2:
                        if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) {
                                return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) {
                                return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) >= 4 * PyLong_SHIFT)) {
                                return (size_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                            }
                        }
                        break;
                }
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (size_t) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if ((sizeof(size_t) <= sizeof(unsigned long))) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_SignedDigitCount(x)) {
                    case -2:
                        if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                                return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                    case 2:
                        if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                                return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                    case -3:
                        if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                                return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                                return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                    case -4:
                        if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                                return (size_t) (((size_t)-1)*(((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(size_t) - 1 > 4 * PyLong_SHIFT)) {
                                return (size_t) ((((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                            }
                        }
                        break;
                }
            }
#endif
            if ((sizeof(size_t) <= sizeof(long))) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
            size_t val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
#if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
#endif
            if (likely(v)) {
                int ret = -1;
#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                ret = _PyLong_AsByteArray((PyLongObject *)v,
                                           bytes, sizeof(val),
                                           is_little, !is_unsigned);
#else
                PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
                int bits, remaining_bits, is_negative = 0;
                long idigit;
                int chunk_size = (sizeof(long) < 8) ? 30 : 62;
                if (unlikely(!PyLong_CheckExact(v))) {
                    PyObject *tmp = v;
                    v = PyNumber_Long(v);
                    assert(PyLong_CheckExact(v));
                    Py_DECREF(tmp);
                    if (unlikely(!v)) return (size_t) -1;
                }
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                if (Py_SIZE(x) == 0)
                    return (size_t) 0;
                is_negative = Py_SIZE(x) < 0;
#else
                {
                    int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                    if (unlikely(result < 0))
                        return (size_t) -1;
                    is_negative = result == 1;
                }
#endif
                if (is_unsigned && unlikely(is_negative)) {
                    goto raise_neg_overflow;
                } else if (is_negative) {
                    stepval = PyNumber_Invert(v);
                    if (unlikely(!stepval))
                        return (size_t) -1;
                } else {
                    stepval = __Pyx_NewRef(v);
                }
                val = (size_t) 0;
                mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
                shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
                for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) {
                    PyObject *tmp, *digit;
                    digit = PyNumber_And(stepval, mask);
                    if (unlikely(!digit)) goto done;
                    idigit = PyLong_AsLong(digit);
                    Py_DECREF(digit);
                    if (unlikely(idigit < 0)) goto done;
                    tmp = PyNumber_Rshift(stepval, shift);
                    if (unlikely(!tmp)) goto done;
                    Py_DECREF(stepval); stepval = tmp;
                    val |= ((size_t) idigit) << bits;
                    #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                    if (Py_SIZE(stepval) == 0)
                        goto unpacking_done;
                    #endif
                }
                idigit = PyLong_AsLong(stepval);
                if (unlikely(idigit < 0)) goto done;
                remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1);
                if (unlikely(idigit >= (1L << remaining_bits)))
                    goto raise_overflow;
                val |= ((size_t) idigit) << bits;
            #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
            unpacking_done:
            #endif
                if (!is_unsigned) {
                    if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1))))
                        goto raise_overflow;
                    if (is_negative)
                        val = ~val;
                }
                ret = 0;
            done:
                Py_XDECREF(shift);
                Py_XDECREF(mask);
                Py_XDECREF(stepval);
#endif
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
            return (size_t) -1;
        }
    } else {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyInt_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if ((sizeof(int) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            if (unlikely(__Pyx_PyLong_IsNeg(x))) {
                goto raise_neg_overflow;
            } else if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_DigitCount(x)) {
                    case 2:
                        if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) >= 2 * PyLong_SHIFT)) {
                                return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) >= 3 * PyLong_SHIFT)) {
                                return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) >= 4 * PyLong_SHIFT)) {
                                return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
                            }
                        }
                        break;
                }
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if ((sizeof(int) <= sizeof(unsigned long))) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_SignedDigitCount(x)) {
                    case -2:
                        if ((8 * sizeof(int) - 1 > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                                return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                    case 2:
                        if ((8 * sizeof(int) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                                return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                    case -3:
                        if ((8 * sizeof(int) - 1 > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                                return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(int) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                                return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                    case -4:
                        if ((8 * sizeof(int) - 1 > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                                return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(int) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(int) - 1 > 4 * PyLong_SHIFT)) {
                                return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
                            }
                        }
                        break;
                }
            }
#endif
            if ((sizeof(int) <= sizeof(long))) {
                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
            int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
#if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
#endif
            if (likely(v)) {
                int ret = -1;
#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                ret = _PyLong_AsByteArray((PyLongObject *)v,
                                           bytes, sizeof(val),
                                           is_little, !is_unsigned);
#else
                PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
                int bits, remaining_bits, is_negative = 0;
                long idigit;
                int chunk_size = (sizeof(long) < 8) ? 30 : 62;
                if (unlikely(!PyLong_CheckExact(v))) {
                    PyObject *tmp = v;
                    v = PyNumber_Long(v);
                    assert(PyLong_CheckExact(v));
                    Py_DECREF(tmp);
                    if (unlikely(!v)) return (int) -1;
                }
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                if (Py_SIZE(x) == 0)
                    return (int) 0;
                is_negative = Py_SIZE(x) < 0;
#else
                {
                    int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                    if (unlikely(result < 0))
                        return (int) -1;
                    is_negative = result == 1;
                }
#endif
                if (is_unsigned && unlikely(is_negative)) {
                    goto raise_neg_overflow;
                } else if (is_negative) {
                    stepval = PyNumber_Invert(v);
                    if (unlikely(!stepval))
                        return (int) -1;
                } else {
                    stepval = __Pyx_NewRef(v);
                }
                val = (int) 0;
                mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
                shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
                for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
                    PyObject *tmp, *digit;
                    digit = PyNumber_And(stepval, mask);
                    if (unlikely(!digit)) goto done;
                    idigit = PyLong_AsLong(digit);
                    Py_DECREF(digit);
                    if (unlikely(idigit < 0)) goto done;
                    tmp = PyNumber_Rshift(stepval, shift);
                    if (unlikely(!tmp)) goto done;
                    Py_DECREF(stepval); stepval = tmp;
                    val |= ((int) idigit) << bits;
                    #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                    if (Py_SIZE(stepval) == 0)
                        goto unpacking_done;
                    #endif
                }
                idigit = PyLong_AsLong(stepval);
                if (unlikely(idigit < 0)) goto done;
                remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
                if (unlikely(idigit >= (1L << remaining_bits)))
                    goto raise_overflow;
                val |= ((int) idigit) << bits;
            #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
            unpacking_done:
            #endif
                if (!is_unsigned) {
                    if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
                        goto raise_overflow;
                    if (is_negative)
                        val = ~val;
                }
                ret = 0;
            done:
                Py_XDECREF(shift);
                Py_XDECREF(mask);
                Py_XDECREF(stepval);
#endif
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to int");
    return (int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to int");
    return (int) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_unsigned_long(unsigned long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned long neg_one = (unsigned long) -1, const_zero = (unsigned long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(unsigned long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(unsigned long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(unsigned long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(unsigned long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(unsigned long),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

/* CIntFromPy */
static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if ((sizeof(unsigned int) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(unsigned int, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (unsigned int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            if (unlikely(__Pyx_PyLong_IsNeg(x))) {
                goto raise_neg_overflow;
            } else if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_DigitCount(x)) {
                    case 2:
                        if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) >= 2 * PyLong_SHIFT)) {
                                return (unsigned int) (((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) >= 3 * PyLong_SHIFT)) {
                                return (unsigned int) (((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) >= 4 * PyLong_SHIFT)) {
                                return (unsigned int) (((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0]));
                            }
                        }
                        break;
                }
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (unsigned int) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if ((sizeof(unsigned int) <= sizeof(unsigned long))) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(unsigned int) <= sizeof(unsigned PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(unsigned int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_SignedDigitCount(x)) {
                    case -2:
                        if ((8 * sizeof(unsigned int) - 1 > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                                return (unsigned int) (((unsigned int)-1)*(((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                    case 2:
                        if ((8 * sizeof(unsigned int) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                                return (unsigned int) ((((((unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                    case -3:
                        if ((8 * sizeof(unsigned int) - 1 > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                                return (unsigned int) (((unsigned int)-1)*(((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(unsigned int) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                                return (unsigned int) ((((((((unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                    case -4:
                        if ((8 * sizeof(unsigned int) - 1 > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                                return (unsigned int) (((unsigned int)-1)*(((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(unsigned int) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(unsigned int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(unsigned int) - 1 > 4 * PyLong_SHIFT)) {
                                return (unsigned int) ((((((((((unsigned int)digits[3]) << PyLong_SHIFT) | (unsigned int)digits[2]) << PyLong_SHIFT) | (unsigned int)digits[1]) << PyLong_SHIFT) | (unsigned int)digits[0])));
                            }
                        }
                        break;
                }
            }
#endif
            if ((sizeof(unsigned int) <= sizeof(long))) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(unsigned int) <= sizeof(PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(unsigned int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
            unsigned int val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
#if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
#endif
            if (likely(v)) {
                int ret = -1;
#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                ret = _PyLong_AsByteArray((PyLongObject *)v,
                                           bytes, sizeof(val),
                                           is_little, !is_unsigned);
#else
                PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
                int bits, remaining_bits, is_negative = 0;
                long idigit;
                int chunk_size = (sizeof(long) < 8) ? 30 : 62;
                if (unlikely(!PyLong_CheckExact(v))) {
                    PyObject *tmp = v;
                    v = PyNumber_Long(v);
                    assert(PyLong_CheckExact(v));
                    Py_DECREF(tmp);
                    if (unlikely(!v)) return (unsigned int) -1;
                }
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                if (Py_SIZE(x) == 0)
                    return (unsigned int) 0;
                is_negative = Py_SIZE(x) < 0;
#else
                {
                    int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                    if (unlikely(result < 0))
                        return (unsigned int) -1;
                    is_negative = result == 1;
                }
#endif
                if (is_unsigned && unlikely(is_negative)) {
                    goto raise_neg_overflow;
                } else if (is_negative) {
                    stepval = PyNumber_Invert(v);
                    if (unlikely(!stepval))
                        return (unsigned int) -1;
                } else {
                    stepval = __Pyx_NewRef(v);
                }
                val = (unsigned int) 0;
                mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
                shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
                for (bits = 0; bits < (int) sizeof(unsigned int) * 8 - chunk_size; bits += chunk_size) {
                    PyObject *tmp, *digit;
                    digit = PyNumber_And(stepval, mask);
                    if (unlikely(!digit)) goto done;
                    idigit = PyLong_AsLong(digit);
                    Py_DECREF(digit);
                    if (unlikely(idigit < 0)) goto done;
                    tmp = PyNumber_Rshift(stepval, shift);
                    if (unlikely(!tmp)) goto done;
                    Py_DECREF(stepval); stepval = tmp;
                    val |= ((unsigned int) idigit) << bits;
                    #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                    if (Py_SIZE(stepval) == 0)
                        goto unpacking_done;
                    #endif
                }
                idigit = PyLong_AsLong(stepval);
                if (unlikely(idigit < 0)) goto done;
                remaining_bits = ((int) sizeof(unsigned int) * 8) - bits - (is_unsigned ? 0 : 1);
                if (unlikely(idigit >= (1L << remaining_bits)))
                    goto raise_overflow;
                val |= ((unsigned int) idigit) << bits;
            #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
            unpacking_done:
            #endif
                if (!is_unsigned) {
                    if (unlikely(val & (((unsigned int) 1) << (sizeof(unsigned int) * 8 - 1))))
                        goto raise_overflow;
                    if (is_negative)
                        val = ~val;
                }
                ret = 0;
            done:
                Py_XDECREF(shift);
                Py_XDECREF(mask);
                Py_XDECREF(stepval);
#endif
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
            return (unsigned int) -1;
        }
    } else {
        unsigned int val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (unsigned int) -1;
        val = __Pyx_PyInt_As_unsigned_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to unsigned int");
    return (unsigned int) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to unsigned int");
    return (unsigned int) -1;
}

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API
static __Pyx_TypeName
__Pyx_PyType_GetName(PyTypeObject* tp)
{
    PyObject *name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_n_s_name);
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) {
        PyErr_Clear();
        Py_XSETREF(name, __Pyx_NewRef(__pyx_n_s__977));
    }
    return name;
}
#endif

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if ((sizeof(long) < sizeof(long))) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                goto raise_neg_overflow;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
            if (unlikely(__Pyx_PyLong_IsNeg(x))) {
                goto raise_neg_overflow;
            } else if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_DigitCount(x)) {
                    case 2:
                        if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) >= 2 * PyLong_SHIFT)) {
                                return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) >= 3 * PyLong_SHIFT)) {
                                return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) >= 4 * PyLong_SHIFT)) {
                                return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
                            }
                        }
                        break;
                }
            }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
            if (unlikely(Py_SIZE(x) < 0)) {
                goto raise_neg_overflow;
            }
#else
            {
                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                if (unlikely(result < 0))
                    return (long) -1;
                if (unlikely(result == 1))
                    goto raise_neg_overflow;
            }
#endif
            if ((sizeof(long) <= sizeof(unsigned long))) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
            }
        } else {
#if CYTHON_USE_PYLONG_INTERNALS
            if (__Pyx_PyLong_IsCompact(x)) {
                __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
            } else {
                const digit* digits = __Pyx_PyLong_Digits(x);
                assert(__Pyx_PyLong_DigitCount(x) > 1);
                switch (__Pyx_PyLong_SignedDigitCount(x)) {
                    case -2:
                        if ((8 * sizeof(long) - 1 > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                                return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                    case 2:
                        if ((8 * sizeof(long) > 1 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                                return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                    case -3:
                        if ((8 * sizeof(long) - 1 > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                                return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                    case 3:
                        if ((8 * sizeof(long) > 2 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                                return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                    case -4:
                        if ((8 * sizeof(long) - 1 > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                                return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                    case 4:
                        if ((8 * sizeof(long) > 3 * PyLong_SHIFT)) {
                            if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                                __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                            } else if ((8 * sizeof(long) - 1 > 4 * PyLong_SHIFT)) {
                                return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
                            }
                        }
                        break;
                }
            }
#endif
            if ((sizeof(long) <= sizeof(long))) {
                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
            } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
            }
        }
        {
            long val;
            PyObject *v = __Pyx_PyNumber_IntOrLong(x);
#if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
#endif
            if (likely(v)) {
                int ret = -1;
#if !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                ret = _PyLong_AsByteArray((PyLongObject *)v,
                                           bytes, sizeof(val),
                                           is_little, !is_unsigned);
#else
                PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
                int bits, remaining_bits, is_negative = 0;
                long idigit;
                int chunk_size = (sizeof(long) < 8) ? 30 : 62;
                if (unlikely(!PyLong_CheckExact(v))) {
                    PyObject *tmp = v;
                    v = PyNumber_Long(v);
                    assert(PyLong_CheckExact(v));
                    Py_DECREF(tmp);
                    if (unlikely(!v)) return (long) -1;
                }
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                if (Py_SIZE(x) == 0)
                    return (long) 0;
                is_negative = Py_SIZE(x) < 0;
#else
                {
                    int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
                    if (unlikely(result < 0))
                        return (long) -1;
                    is_negative = result == 1;
                }
#endif
                if (is_unsigned && unlikely(is_negative)) {
                    goto raise_neg_overflow;
                } else if (is_negative) {
                    stepval = PyNumber_Invert(v);
                    if (unlikely(!stepval))
                        return (long) -1;
                } else {
                    stepval = __Pyx_NewRef(v);
                }
                val = (long) 0;
                mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
                shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
                for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
                    PyObject *tmp, *digit;
                    digit = PyNumber_And(stepval, mask);
                    if (unlikely(!digit)) goto done;
                    idigit = PyLong_AsLong(digit);
                    Py_DECREF(digit);
                    if (unlikely(idigit < 0)) goto done;
                    tmp = PyNumber_Rshift(stepval, shift);
                    if (unlikely(!tmp)) goto done;
                    Py_DECREF(stepval); stepval = tmp;
                    val |= ((long) idigit) << bits;
                    #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
                    if (Py_SIZE(stepval) == 0)
                        goto unpacking_done;
                    #endif
                }
                idigit = PyLong_AsLong(stepval);
                if (unlikely(idigit < 0)) goto done;
                remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
                if (unlikely(idigit >= (1L << remaining_bits)))
                    goto raise_overflow;
                val |= ((long) idigit) << bits;
            #if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030B0000
            unpacking_done:
            #endif
                if (!is_unsigned) {
                    if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
                        goto raise_overflow;
                    if (is_negative)
                        val = ~val;
                }
                ret = 0;
            done:
                Py_XDECREF(shift);
                Py_XDECREF(mask);
                Py_XDECREF(stepval);
#endif
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to long");
    return (long) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to long");
    return (long) -1;
}

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (cls == a || cls == b) return 1;
    mro = cls->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            PyObject *base = PyTuple_GET_ITEM(mro, i);
            if (base == (PyObject *)a || base == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
}
#if PY_MAJOR_VERSION == 2
static int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {
    PyObject *exception, *value, *tb;
    int res;
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&exception, &value, &tb);
    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;
    if (unlikely(res == -1)) {
        PyErr_WriteUnraisable(err);
        res = 0;
    }
    if (!res) {
        res = PyObject_IsSubclass(err, exc_type2);
        if (unlikely(res == -1)) {
            PyErr_WriteUnraisable(err);
            res = 0;
        }
    }
    __Pyx_ErrRestore(exception, value, tb);
    return res;
}
#else
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    if (exc_type1) {
        return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
    } else {
        return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
}
#endif
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
#if PY_MAJOR_VERSION >= 3
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
#endif
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        #if PY_MAJOR_VERSION < 3
        if (likely(exc_type == t)) return 1;
        #endif
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_value = exc_info->exc_value;
    exc_info->exc_value = *value;
    if (tmp_value == NULL || tmp_value == Py_None) {
        Py_XDECREF(tmp_value);
        tmp_value = NULL;
        tmp_type = NULL;
        tmp_tb = NULL;
    } else {
        tmp_type = (PyObject*) Py_TYPE(tmp_value);
        Py_INCREF(tmp_type);
        #if CYTHON_COMPILING_IN_CPYTHON
        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
        Py_XINCREF(tmp_tb);
        #else
        tmp_tb = PyException_GetTraceback(tmp_value);
        #endif
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
  #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
  #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* PyObjectCallMethod1 */
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
    PyObject *method = NULL, *result;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_Call2Args(method, obj, arg);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) return NULL;
    return __Pyx__PyObject_CallMethod1(method, arg);
}

/* CoroutineBase */
#include <frameobject.h>
#if PY_VERSION_HEX >= 0x030b00a6
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#define __Pyx_Coroutine_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    CYTHON_UNUSED_VAR(__pyx_tstate);
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#if PY_VERSION_HEX >= 0x030300A0
        else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) {
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            Py_DECREF(ev);
        }
#endif
        else if (unlikely(PyTuple_Check(ev))) {
            if (PyTuple_GET_SIZE(ev) >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#else
                value = PySequence_ITEM(ev, 0);
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = __Pyx_PyObject_GetAttrStr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PySequence_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_CLEAR(exc_state->exc_value);
#else
    PyObject *t, *v, *tb;
    t = exc_state->exc_type;
    v = exc_state->exc_value;
    tb = exc_state->exc_traceback;
    exc_state->exc_type = NULL;
    exc_state->exc_value = NULL;
    exc_state->exc_traceback = NULL;
    Py_XDECREF(t);
    Py_XDECREF(v);
    Py_XDECREF(tb);
#endif
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) {
    const char *msg;
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
#define __Pyx_Coroutine_NotStartedError(gen)  (__Pyx__Coroutine_NotStartedError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_NotStartedError(PyObject *gen) {
    const char *msg;
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check(gen)) {
        msg = "can't send non-None value to a just-started coroutine";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact(gen)) {
        msg = "can't send non-None value to a just-started async generator";
    #endif
    } else {
        msg = "can't send non-None value to a just-started generator";
    }
    PyErr_SetString(PyExc_TypeError, msg);
}
#define __Pyx_Coroutine_AlreadyTerminatedError(gen, value, closing)  (__Pyx__Coroutine_AlreadyTerminatedError(gen, value, closing), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    CYTHON_MAYBE_UNUSED_VAR(closing);
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_Check(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(__Pyx_PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
PyObject *__Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    __Pyx_ExcInfoStruct *exc_state;
    PyObject *retval;
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            return __Pyx_Coroutine_NotStartedError((PyObject*)self);
        }
    }
    if (unlikely(self->resume_label == -1)) {
        return __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    exc_state = &self->gi_exc_state;
    if (exc_state->exc_value) {
        #if CYTHON_COMPILING_IN_PYPY
        #else
        PyObject *exc_tb;
        #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
        exc_tb = PyException_GetTraceback(exc_state->exc_value);
        #elif PY_VERSION_HEX >= 0x030B00a4
        exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback;
        #else
        exc_tb = exc_state->exc_traceback;
        #endif
        if (exc_tb) {
            PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
            PyFrameObject *f = tb->tb_frame;
            assert(f->f_back == NULL);
            #if PY_VERSION_HEX >= 0x030B00A1
            f->f_back = PyThreadState_GetFrame(tstate);
            #else
            Py_XINCREF(tstate->frame);
            f->f_back = tstate->frame;
            #endif
            #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
            Py_DECREF(exc_tb);
            #endif
        }
        #endif
    }
#if CYTHON_USE_EXC_INFO_STACK
    exc_state->previous_item = tstate->exc_info;
    tstate->exc_info = exc_state;
#else
    if (exc_state->exc_type) {
        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(exc_state);
        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    }
#endif
    self->is_running = 1;
    retval = self->body(self, tstate, value);
    self->is_running = 0;
#if CYTHON_USE_EXC_INFO_STACK
    exc_state = &self->gi_exc_state;
    tstate->exc_info = exc_state->previous_item;
    exc_state->previous_item = NULL;
    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
#endif
    return retval;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
#if CYTHON_COMPILING_IN_PYPY
    CYTHON_UNUSED_VAR(exc_state);
#else
    PyObject *exc_tb;
    #if PY_VERSION_HEX >= 0x030B00a4
    if (!exc_state->exc_value) return;
    exc_tb = PyException_GetTraceback(exc_state->exc_value);
    #else
    exc_tb = exc_state->exc_traceback;
    #endif
    if (likely(exc_tb)) {
        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
        #if PY_VERSION_HEX >= 0x030B00a4
        Py_DECREF(exc_tb);
        #endif
    }
#endif
}
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_MethodReturn(PyObject* gen, PyObject *retval) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if (unlikely(!retval)) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        if (!__Pyx_PyErr_Occurred()) {
            PyObject *exc = PyExc_StopIteration;
            #ifdef __Pyx_AsyncGen_USED
            if (__Pyx_AsyncGen_CheckExact(gen))
                exc = __Pyx_PyExc_StopAsyncIteration;
            #endif
            __Pyx_PyErr_SetNone(exc);
        }
    }
    return retval;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
static CYTHON_INLINE
PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
#if PY_VERSION_HEX <= 0x030A00A1
    return _PyGen_Send(gen, arg);
#else
    PyObject *result;
    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
        if (PyAsyncGen_CheckExact(gen)) {
            assert(result == Py_None);
            PyErr_SetNone(PyExc_StopAsyncIteration);
        }
        else if (result == Py_None) {
            PyErr_SetNone(PyExc_StopIteration);
        }
        else {
            _PyGen_SetStopIterationValue(result);
        }
        Py_CLEAR(result);
    }
    return result;
#endif
}
#endif
static CYTHON_INLINE
PyObject *__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    ret = __Pyx_Coroutine_SendEx(gen, val, 0);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03050000 && defined(PyCoro_CheckExact) && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyCoro_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
        {
            if (value == Py_None)
                ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        retval = __Pyx_Coroutine_FinishDelegation(gen);
    } else {
        retval = __Pyx_Coroutine_SendEx(gen, value, 0);
    }
    return __Pyx_Coroutine_MethodReturn(self, retval);
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(yf)) {
        retval = __Pyx_Coroutine_Close(yf);
        if (!retval)
            return -1;
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        retval = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf, NULL);
        if (!retval)
            return -1;
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
    } else
    #endif
    {
        PyObject *meth;
        gen->is_running = 1;
        meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (unlikely(PyErr_Occurred())) {
                PyErr_WriteUnraisable(yf);
            }
        } else {
            retval = __Pyx_PyObject_CallNoArg(meth);
            Py_DECREF(meth);
            if (unlikely(!retval))
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03030000 && (defined(__linux__) || PY_VERSION_HEX >= 0x030600B3)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, Py_None);
        } else
        #endif
            ret = __Pyx_PyObject_GetIterNextFunc(yf)(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Coroutine_FinishDelegation(gen);
    }
    return __Pyx_Coroutine_SendEx(gen, Py_None, 0);
}
static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) {
    CYTHON_UNUSED_VAR(arg);
    return __Pyx_Coroutine_Close(self);
}
static PyObject *__Pyx_Coroutine_Close(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    retval = __Pyx_Coroutine_SendEx(gen, NULL, 1);
    if (unlikely(retval)) {
        const char *msg;
        Py_DECREF(retval);
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_Check(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
#if PY_VERSION_HEX < 0x03060000
            msg = "async generator ignored GeneratorExit - might require Python 3.6+ finalisation (PEP 525)";
#else
            msg = "async generator ignored GeneratorExit";
#endif
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (likely(!raised_exception || __Pyx_PyErr_GivenExceptionMatches2(raised_exception, PyExc_GeneratorExit, PyExc_StopIteration))) {
        if (raised_exception) PyErr_Clear();
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(gen->is_running))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
            goto throw_here;
        }
        gen->is_running = 1;
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_Check(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (unlikely(PyErr_Occurred())) {
                    gen->is_running = 0;
                    return NULL;
                }
                __Pyx_Coroutine_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            if (likely(args)) {
                ret = __Pyx_PyObject_Call(meth, args, NULL);
            } else {
                PyObject *cargs[4] = {NULL, typ, val, tb};
                ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
            }
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Coroutine_FinishDelegation(gen);
        }
        return __Pyx_Coroutine_MethodReturn(self, ret);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Coroutine_MethodReturn(self, __Pyx_Coroutine_SendEx(gen, NULL, 0));
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (unlikely(!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb)))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_VISIT(exc_state->exc_value);
#else
    Py_VISIT(exc_state->exc_type);
    Py_VISIT(exc_state->exc_value);
    Py_VISIT(exc_state->exc_traceback);
#endif
    return 0;
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_code);
    Py_CLEAR(gen->gi_frame);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1 && CYTHON_USE_TP_FINALIZE
        if (unlikely(PyObject_CallFinalizerFromDealloc(self)))
#else
        Py_TYPE(gen)->tp_del(self);
        if (unlikely(Py_REFCNT(self) > 0))
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    __Pyx_PyHeapTypeObject_GC_Del(gen);
}
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
#if !CYTHON_USE_TP_FINALIZE
    assert(self->ob_refcnt == 0);
    __Pyx_SET_REFCNT(self, 1);
#endif
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
#if PY_MAJOR_VERSION >= 3  || defined(PyErr_WarnFormat)
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
#else
        {PyObject *msg;
        char *cmsg;
        #if CYTHON_COMPILING_IN_PYPY
        msg = NULL;
        cmsg = (char*) "coroutine was never awaited";
        #else
        char *cname;
        PyObject *qualname;
        qualname = gen->gi_qualname;
        cname = PyString_AS_STRING(qualname);
        msg = PyString_FromFormat("coroutine '%.50s' was never awaited", cname);
        if (unlikely(!msg)) {
            PyErr_Clear();
            cmsg = (char*) "coroutine was never awaited";
        } else {
            cmsg = PyString_AS_STRING(msg);
        }
        #endif
        if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, cmsg, 1) < 0))
            PyErr_WriteUnraisable(self);
        Py_XDECREF(msg);}
#endif
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *res = __Pyx_Coroutine_Close(self);
        if (unlikely(!res)) {
            if (PyErr_Occurred())
                PyErr_WriteUnraisable(self);
        } else {
            Py_DECREF(res);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if !CYTHON_USE_TP_FINALIZE
    assert(Py_REFCNT(self) > 0);
    if (likely(--self->ob_refcnt == 0)) {
        return;
    }
    {
        Py_ssize_t refcnt = Py_REFCNT(self);
        _Py_NewReference(self);
        __Pyx_SET_REFCNT(self, refcnt);
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(Py_TYPE(self)) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    _Py_DEC_REFTOTAL;
#endif
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_name;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(self->gi_name, value);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_qualname;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
#if PY_MAJOR_VERSION >= 3
    if (unlikely(value == NULL || !PyUnicode_Check(value)))
#else
    if (unlikely(value == NULL || !PyString_Check(value)))
#endif
    {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(self->gi_qualname, value);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context)
{
    PyObject *frame = self->gi_frame;
    CYTHON_UNUSED_VAR(context);
    if (!frame) {
        if (unlikely(!self->gi_code)) {
            Py_RETURN_NONE;
        }
        frame = (PyObject *) PyFrame_New(
            PyThreadState_Get(),            /*PyThreadState *tstate,*/
            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
            __pyx_d,                 /*PyObject *globals,*/
            0                               /*PyObject *locals*/
        );
        if (unlikely(!frame))
            return NULL;
        self->gi_frame = frame;
    }
    Py_INCREF(frame);
    return frame;
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    #if PY_VERSION_HEX >= 0x030B00a4
    gen->gi_exc_state.exc_value = NULL;
    #else
    gen->gi_exc_state.exc_type = NULL;
    gen->gi_exc_state.exc_value = NULL;
    gen->gi_exc_state.exc_traceback = NULL;
    #endif
#if CYTHON_USE_EXC_INFO_STACK
    gen->gi_exc_state.previous_item = NULL;
#endif
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    Py_XINCREF(code);
    gen->gi_code = code;
    gen->gi_frame = NULL;
    PyObject_GC_Track(gen);
    return gen;
}

/* PatchModuleWithCoroutine */
static PyObject* __Pyx_Coroutine_patch_module(PyObject* module, const char* py_code) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    int result;
    PyObject *globals, *result_obj;
    globals = PyDict_New();  if (unlikely(!globals)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_coroutine_type",
    #ifdef __Pyx_Coroutine_USED
        (PyObject*)__pyx_CoroutineType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    result = PyDict_SetItemString(globals, "_cython_generator_type",
    #ifdef __Pyx_Generator_USED
        (PyObject*)__pyx_GeneratorType);
    #else
        Py_None);
    #endif
    if (unlikely(result < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "_module", module) < 0)) goto ignore;
    if (unlikely(PyDict_SetItemString(globals, "__builtins__", __pyx_b) < 0)) goto ignore;
    result_obj = PyRun_String(py_code, Py_file_input, globals, globals);
    if (unlikely(!result_obj)) goto ignore;
    Py_DECREF(result_obj);
    Py_DECREF(globals);
    return module;
ignore:
    Py_XDECREF(globals);
    PyErr_WriteUnraisable(module);
    if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning, "Cython module failed to patch module with custom type", 1) < 0)) {
        Py_DECREF(module);
        module = NULL;
    }
#else
    py_code++;
#endif
    return module;
}

/* PatchGeneratorABC */
#ifndef CYTHON_REGISTER_ABCS
#define CYTHON_REGISTER_ABCS 1
#endif
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
static PyObject* __Pyx_patch_abc_module(PyObject *module);
static PyObject* __Pyx_patch_abc_module(PyObject *module) {
    module = __Pyx_Coroutine_patch_module(
        module, ""
"if _cython_generator_type is not None:\n"
"    try: Generator = _module.Generator\n"
"    except AttributeError: pass\n"
"    else: Generator.register(_cython_generator_type)\n"
"if _cython_coroutine_type is not None:\n"
"    try: Coroutine = _module.Coroutine\n"
"    except AttributeError: pass\n"
"    else: Coroutine.register(_cython_coroutine_type)\n"
    );
    return module;
}
#endif
static int __Pyx_patch_abc(void) {
#if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
    static int abc_patched = 0;
    if (CYTHON_REGISTER_ABCS && !abc_patched) {
        PyObject *module;
        module = PyImport_ImportModule((PY_MAJOR_VERSION >= 3) ? "collections.abc" : "collections");
        if (unlikely(!module)) {
            PyErr_WriteUnraisable(NULL);
            if (unlikely(PyErr_WarnEx(PyExc_RuntimeWarning,
                    ((PY_MAJOR_VERSION >= 3) ?
                        "Cython module failed to register with collections.abc module" :
                        "Cython module failed to register with collections module"), 1) < 0)) {
                return -1;
            }
        } else {
            module = __Pyx_patch_abc_module(module);
            abc_patched = 1;
            if (unlikely(!module))
                return -1;
            Py_DECREF(module);
        }
        module = PyImport_ImportModule("backports_abc");
        if (module) {
            module = __Pyx_patch_abc_module(module);
            Py_XDECREF(module);
        }
        if (!module) {
            PyErr_Clear();
        }
    }
#else
    if ((0)) __Pyx_Coroutine_patch_module(NULL, NULL);
#endif
    return 0;
}

/* Generator */
static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     (char*) PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     (char*) PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     (char*) PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running", T_BOOL, offsetof(__pyx_CoroutineObject, is_running), READONLY, NULL},
    {(char*) "gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     (char*) PyDoc_STR("object being iterated by 'yield from', or None")},
    {(char*) "gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {(char *) "__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
#if CYTHON_USE_TYPE_SPECS
    {(char *) "__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {(char *) "__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     (char*) PyDoc_STR("name of the generator"), 0},
    {(char *) "__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     (char*) PyDoc_STR("qualified name of the generator"), 0},
    {(char *) "gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     (char*) PyDoc_STR("Frame of the generator"), 0},
    {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_GeneratorType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
    {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
    {Py_tp_iter, (void *)PyObject_SelfIter},
    {Py_tp_iternext, (void *)__Pyx_Generator_Next},
    {Py_tp_methods, (void *)__pyx_Generator_methods},
    {Py_tp_members, (void *)__pyx_Generator_memberlist},
    {Py_tp_getset, (void *)__pyx_Generator_getsets},
    {Py_tp_getattro, (void *) __Pyx_PyObject_GenericGetAttrNoDict},
#if CYTHON_USE_TP_FINALIZE
    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
#endif
    {0, 0},
};
static PyType_Spec __pyx_GeneratorType_spec = {
    __PYX_TYPE_MODULE_PREFIX "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    __pyx_GeneratorType_slots
};
#else
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    __PYX_TYPE_MODULE_PREFIX "generator",
    sizeof(__pyx_CoroutineObject),
    0,
    (destructor) __Pyx_Coroutine_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE,
    0,
    (traverseproc) __Pyx_Coroutine_traverse,
    0,
    0,
    offsetof(__pyx_CoroutineObject, gi_weakreflist),
    0,
    (iternextfunc) __Pyx_Generator_Next,
    __pyx_Generator_methods,
    __pyx_Generator_memberlist,
    __pyx_Generator_getsets,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
#if CYTHON_USE_TP_FINALIZE
    0,
#else
    __Pyx_Coroutine_del,
#endif
    0,
#if CYTHON_USE_TP_FINALIZE
    __Pyx_Coroutine_del,
#elif PY_VERSION_HEX >= 0x030400a1
    0,
#endif
#if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
    0,
#endif
#if __PYX_NEED_TP_PRINT_SLOT
    0,
#endif
#if PY_VERSION_HEX >= 0x030C0000
    0,
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
    0,
#endif
};
#endif
static int __pyx_Generator_init(PyObject *module) {
#if CYTHON_USE_TYPE_SPECS
    __pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(module, &__pyx_GeneratorType_spec, NULL);
#else
    CYTHON_UNUSED_VAR(module);
    __pyx_GeneratorType_type.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
#endif
    if (unlikely(!__pyx_GeneratorType)) {
        return -1;
    }
    return 0;
}

/* CheckBinaryVersion */
static int __Pyx_check_binary_version(void) {
    char ctversion[5];
    int same=1, i, found_dot;
    const char* rt_from_call = Py_GetVersion();
    PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    found_dot = 0;
    for (i = 0; i < 4; i++) {
        if (!ctversion[i]) {
            same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
            break;
        }
        if (rt_from_call[i] != ctversion[i]) {
            same = 0;
            break;
        }
    }
    if (!same) {
        char rtversion[5] = {'\0'};
        char message[200];
        for (i=0; i<4; ++i) {
            if (rt_from_call[i] == '.') {
                if (found_dot) break;
                found_dot = 1;
            } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
                break;
            }
            rtversion[i] = rt_from_call[i];
        }
        PyOS_snprintf(message, sizeof(message),
                      "compile time version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        return PyErr_WarnEx(NULL, message, 1);
    }
    return 0;
}

/* InitStrings */
#if PY_MAJOR_VERSION >= 3
static int __Pyx_InitString(__Pyx_StringTabEntry t, PyObject **str) {
    if (t.is_unicode | t.is_str) {
        if (t.intern) {
            *str = PyUnicode_InternFromString(t.s);
        } else if (t.encoding) {
            *str = PyUnicode_Decode(t.s, t.n - 1, t.encoding, NULL);
        } else {
            *str = PyUnicode_FromStringAndSize(t.s, t.n - 1);
        }
    } else {
        *str = PyBytes_FromStringAndSize(t.s, t.n - 1);
    }
    if (!*str)
        return -1;
    if (PyObject_Hash(*str) == -1)
        return -1;
    return 0;
}
#endif
static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION >= 3
        __Pyx_InitString(*t, t->p);
        #else
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        if (!*t->p)
            return -1;
        if (PyObject_Hash(*t->p) == -1)
            return -1;
        #endif
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
#if !CYTHON_PEP393_ENABLED
static const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    char* defenc_c;
    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
    if (!defenc) return NULL;
    defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    {
        char* end = defenc_c + PyBytes_GET_SIZE(defenc);
        char* c;
        for (c = defenc_c; c < end; c++) {
            if ((unsigned char) (*c) >= 128) {
                PyUnicode_AsASCIIString(o);
                return NULL;
            }
        }
    }
#endif
    *length = PyBytes_GET_SIZE(defenc);
    return defenc_c;
}
#else
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(PyUnicode_IS_ASCII(o))) {
        *length = PyUnicode_GET_LENGTH(o);
        return PyUnicode_AsUTF8(o);
    } else {
        PyUnicode_AsASCIIString(o);
        return NULL;
    }
#else
    return PyUnicode_AsUTF8AndSize(o, length);
#endif
}
#endif
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
#if (!CYTHON_COMPILING_IN_PYPY && !CYTHON_COMPILING_IN_LIMITED_API) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetName(Py_TYPE(result));
#if PY_MAJOR_VERSION >= 3
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
                "The ability to return an instance of a strict subclass of int is deprecated, "
                "and may be removed in a future version of Python.",
                result_type_name)) {
            __Pyx_DECREF_TypeName(result_type_name);
            Py_DECREF(result);
            return NULL;
        }
        __Pyx_DECREF_TypeName(result_type_name);
        return result;
    }
#endif
    PyErr_Format(PyExc_TypeError,
                 "__%.4s__ returned non-%.4s (type " __Pyx_FMT_TYPENAME ")",
                 type_name, type_name, result_type_name);
    __Pyx_DECREF_TypeName(result_type_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_Check(x) || PyLong_Check(x)))
#else
  if (likely(PyLong_Check(x)))
#endif
    return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  #if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = m->nb_int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = m->nb_long(x);
  }
  #else
  if (likely(m && m->nb_int)) {
    name = "int";
    res = m->nb_int(x);
  }
  #endif
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
    res = PyNumber_Int(x);
  }
#endif
  if (likely(res)) {
#if PY_MAJOR_VERSION < 3
    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {
#else
    if (unlikely(!PyLong_CheckExact(res))) {
#endif
        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b))) {
    if (sizeof(Py_ssize_t) >= sizeof(long))
        return PyInt_AS_LONG(b);
    else
        return PyInt_AsSsize_t(b);
  }
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(__Pyx_PyLong_IsCompact(b))) {
        return __Pyx_PyLong_CompactValue(b);
    } else {
      const digit* digits = __Pyx_PyLong_Digits(b);
      const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
      switch (size) {
         case 2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -2:
           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -3:
           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case 4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
         case -4:
           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
           }
           break;
      }
    }
    #endif
    return PyLong_AsSsize_t(b);
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
    return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
#if PY_MAJOR_VERSION < 3
  } else if (likely(PyInt_CheckExact(o))) {
    return PyInt_AS_LONG(o);
#endif
  } else {
    Py_ssize_t ival;
    PyObject *x;
    x = PyNumber_Index(o);
    if (!x) return -1;
    ival = PyInt_AsLong(x);
    Py_DECREF(x);
    return ival;
  }
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
    return PyInt_FromSize_t(ival);
}


/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
